MySQL基础进阶

文章目录

  • MySQL基础进阶
    • 约束 \color{red}{约束} 约束
      • 约束的概念和分类
        • 约束的概念
        • 约束的分类
      • 非空约束
        • 概念
        • 语法
      • 唯一约束
        • 概念
        • 语法
      • 主键约束
        • 概念
        • 语法
    • 数据库设计 \color{red}{数据库设计} 数据库设计
      • 软件的研发步骤
      • 数据库设计概念
      • 数据库设计的步骤
      • 表关系
        • 一对一
        • 一对多(多对一)
        • 多对多
      • 外键约束
        • 概念
        • 使用中间表的目的是维护两表多对多的关系:
        • 语法
        • 删除约束
      • 总结
        • 一对多实现的方式
        • 多对多实现方式
        • 一对一实现方式
    • 多表查询 \color{red}{多表查询} 多表查询
      • 概念
      • 多表查询的分类
      • 内链接
        • 概念
        • 显示内连接
        • 隐式内连接
        • 内连接查询步骤
      • 外连接
        • 左外连接
        • 右外连接
      • 子查询
        • 介绍
        • 单行单列

MySQL基础进阶

约束 \color{red}{约束} 约束

约束的概念和分类

约束的概念

  1.约束是作用于表中列上的规则,用于限制加入表的数据。

约束的分类

MySQL基础进阶_第1张图片

非空约束

概念

  非空约束保证数据不为空。

语法

  1.添加约束。

– 创建表时添加非空约束。

CREATE TABLE 表名(
  列名 数据类型 NOT BULL,
  ……
);

–建完表后添加非空约束

ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;

  2.删除元素

ALTER TABLE 表名 MODIFY 字段名 数据类型;

唯一约束

概念

  1.唯一约束用于保证列中所有数据不同。

语法

  添加约束。

– 创建表时添加唯一约束

CREATE TABLE 表名(
  列名 数据类型 UNIQUE [AUTO_INCREMENT],
  -- AUTO_INCREMENT:当不指定值时自动增长
  ……
);

CREATE TABLE 表名(
  列名 数据类型,
  ……
  [constraint ] [约束名称] UNIQUE(列名)
);

  2.建完表后添加唯一约束

ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;

主键约束

概念

  主键是一行数据的唯一标识,要求非空且唯一。
  一张表只能有一个主键。

语法

– 添加表时添加主键约束

CREATE TABLE 表名(
  列名 数据类型 PRIMARY KEY [AUTO_INCREMENT],
  ……
);

CREATE TABLE 表名(
  列名 数据类型,
  [CONSTRAINT ] [约束条件] PRIMARY KEY(列名)
);

– 建完表后添加主键约束

ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

数据库设计 \color{red}{数据库设计} 数据库设计

软件的研发步骤

MySQL基础进阶_第2张图片

数据库设计概念

&nesp; 1.数据库设计就是根据业务的具体需求,结合我们所选用的DBMS,位这个业务系统构造出最优的数据存储模型。
&nesp; 2.建立数据库中的表结构以及表与表之间的关联的过程。
&nesp; 3.有那些表?表中有那些字段?表和表之间有什么关系。

数据库设计的步骤

&nesp; 1,需求分析(数据是什么?数据具有那些属性?数据与属性的特点是什么)
&nesp; 2.逻辑分析(通过ER图对数据进行逻辑建模,不需要考虑我们所选用的数据库管理系统)
&nesp; 3.物理设计(根据数据库自身的特点把逻辑设计转化为物理设计)
&nesp; 4.维护设计(1.对新的需求进行建表;2.表优化)

表关系

一对一

  1.用户和用户详情。
  2.一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询功能。

一对多(多对一)

  1.部门和员工
  2.一个部门对应多个员工,一个员工对应一个部门。

多对多

  1.商品和订单。
  2.一个商品对应多个订单,一个订单包含多个商品。

外键约束

概念

  1.外键用来让两个表的数据之间建立链接,保证数据一致性和完整性。
例如:上述多对多中的订单商品表来维护订单表和商品表之间的关系。

使用中间表的目的是维护两表多对多的关系:

  1.中间表插入的数据必须在多对多的表中存在。
  2.如果主表的记录在中间表维护了关系,就不能随意删除,如果可以删除,中间表就找不到对应的数据了,这样就没有意义了。

语法

– 创建表时添加外键约束

create table 表名(
  列名 数据类型,
  ……
  [constraint ] [外键名称] foreign key(外键列名)references 主表 (主表列名)
);

– 关键字解释

constraint:添加约束,可以不写
foreign key(当前表中的列名):将某个字段作为外键
references 被引用表名(被引用表的列名):外键引用主表的主键

– 建完表后添加外键约束

alter table 表名 add constraint 外键名称 foreign key  (外键字段名称) references 主表名称(主表列名称); 
删除约束
alter table 表名 drop foreign key 外键名称;

总结

一对多实现的方式

   在多的一方建立外键关联一的一方主键。

多对多实现方式

  建立第三张中间表。
  中间表至少包含2个外键,分别关联双方主键。

一对一实现方式

  在任意一方建立外键,关联对方主键,并设置外键唯一。

多表查询 \color{red}{多表查询} 多表查询

概念

  同时查询多张表,获取需要的数据;
  比如:我们向查询水果对应的价格,需要将水果表和价格表同时进行查询;

多表查询的分类

MySQL基础进阶_第3张图片

内链接

概念

  内连接查询有称为交集查询,也就是查询只显示满足条件的数据;

显示内连接

  显示内连接:使用inner join……on语句,可以省略Inner关键字 ;

select * from 表名1 inner join 表名2 on 条件;

select * from 表名1 join 表名2 on 条件;
隐式内连接

  看不到join关键字,条件使用where指定;

select 列名 , 列名, ……from 表名1, 表格2 where 表名1.列名 = 表名2.列名;

内连接查询步骤

  1.确定查询几张表。
  2.确定表连接条件。
  3.根据需要在操作。

外连接

左外连接

  左表的记录全部表示出来。
  右表只会显示符合条件的记录。

 select * from1 left outer join2 on 条件;
右外连接

  右表的记录全部展示出来。
  左表只会显示符合搜索条件的记录。

 select * from1 right outer join2 on 条件;

子查询

介绍

  子查询就是一个sql查询的结果作为另一个sql查询语句的一部分

单行单列

  作为父查询的条件
  作为父查询的条件,通常使用IN
  作为父查询的一张表(虚拟表),起别名

你可能感兴趣的:(MySQL,mysql,数据库)