day57-mysql-五种约束和sql语句逻辑执行顺序

时间:2021-02-06 08:32:18
二、sql语句逻辑执行顺序
(7) SELECT
(8) DISTINCT <select_list> 去重复
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) HAVING <having_condition>
(9) ORDER BY <order_by_condition>
(10) LIMIT <limit_number> 三、五种约束:
1.外键约束:对两个表的关系进行一些约束。例如dept表里面有部门id,那么person表的部门id不能为空,否则无法一一对应。
如果需要外键约束,最好创建表同时创建外键约束:
create table person(dept_id int(11) DEFAULT NULL,
CONSTRAINT fk_id FOREIGN key(dept_id) REFERENCES dept(did)); 已经创建表后,追加外键约束:
添加外键:
alter table person add CONSTRAINT fk_id FOREIGN key(dept_id) REFERENCES dept(did); 删除外键
alter table person DROP FOREIGN key fk_id 注:插入数据时,先插入主表中的数据,再插入从表中的数据。 删除数据时,先删除从表中的数据,再删除主表中的数据。 2.唯一约束 -- UNIQUE,也叫唯一索引约束,id_name添加到设计表的索引那里。设置唯一约束之后,id和name无法重复,
例如id是1,name是tom,那么将无法插入id是1,name是tom的值。
create table t4(
id int(10) not null,
name varchar(255) ,
unique id_name(id,name)); ALTER table t4 add UNIQUE id_name(id,name) --表格创建之后添加唯一约束。 alter table t4 DROP index id_name --删除 3.默认值约束(default)
create table t5(
id int(10) not null primary key,
name varchar(255) default '张三'); INSERT into t5 VALUES(3,DEFAULT),(4,DEFAULT);
insert into t5(id) values(5),(6); 4.非空约束
关键字: NOT NULL ,表示 不可空. 用来约束表中的字段列
create table t1(
id int(10) not null primary key,
name varchar(100) null );     5.主键约束
用于约束表中的一行,作为这一行的标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要。
create table t2(id int(10) not null primary key);
注意: 主键这一行的数据不能重复且不能为空。 还有一种特殊的主键——复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识
create table t3(
id int(10) not null,
name varchar(100) ,
primary key(id,name)); alter table t3 add primary key(id,name); --表格创建之后添加主键约束 6.表与表之间关系
1.一对多 ,一对一 ,多对多 7.数据库设计三范式
1.第一范式(确保每列保持原子性)
2.第二范式(确保表中的每列都和主键相关)