一、概念
约束:对表中的数据进行限定,保证数据的正确性、有效性和完整性。
二、分类
1.主键约束:primary key
2.非空约束:not null
3.唯一约束:unique
4.外键约束:foreign key
三、非空约束 not null,被修饰列值不能为空
1.创建表时添加非空约束
create table student(id int, name varchar(32) not null); -- name为非空
2.删除非空约束
alter table student modify name varchar(32);
3.创建表完成后,添加非空约束
alter table student modify name varchar(32) not null;
四、唯一约束 unique,被修饰列值不能重复
1.创建表时添加唯一约束
create table student(id int, phone_number varchar(20) unique); -- phone_number列添加了唯一约束
2.删除唯一约束
alter table student drop index phone_number;
3.创建表完成后,添加唯一约束
alter table student modify phone_number varchar(20) unique;
注意:这样删除不掉唯一约束:alter table student modify phone_number varhcar(20);
注意:MySQL中唯一约束限定的列的值可以有多个null。
五、主键约束 primary key
(一) 注意:
1. 主键的含义:非空且唯一。
2.一张表只能有一个字段为主键
3.主键就是表中记录的唯一标识
(二)添加主键
1.创建表时添加主键约束
create table student(id int primary key, name varchar(20));
2.删除主键约束
alter table student drop primary key;
3.创建表完成后,添加主键
alter table student modify id int primary key;
注意:这样删除不掉主键约束:alter table student modify id int;
六、主键约束_自动增长
1.概念:如果某一列是数值类型的,使用auto_increment可以来完成值的自动增长
2.创建表时添加主键约束,并完成自增长。
create table student(id int primary key auto_increment, name varchar(32));
3.删除自动增长(主键约束删除不掉,自动增长约束可以删除)
alter table student modify id int;
4.创建表完成后,给主键列添加自动增长约束
alter table student modify id int auto_increment;
七、外键约束 foreign key,让表与表产生关系,从而保证数据的正确性
1.在创建表时添加外键约束
语法:
create table(
……
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称 -- 可以是主键,也可以是被唯一约束的列)
);
举例:
创建部门表(id, dept_name, dept_location)
create table department(
id int primary key auto_increment,
dept_name varchar(20),
dept_location varchar(20)
);
创建员工表(id, name, age, dept_id)
create table employee(
id int primary key auto_increment,
name varchar(20),
age int,
dept_id int,
constraint emp_dept_fk foreign key (dept_id) references department(id)
);
外键名随便起,只要不重复即可。
2.删除外键
alter table employee drop foreign key emp_dept_fk;
alter table 表名 drop foreign key 外键名称;
3.创建表完成后,添加外键约束
alter table employee add constraint emp_dept_fk foreign key (dept_id) references deparment(id);
alter table 表名add constraint 外键名称 foreign key (列名) references 主表名称(主表的列的名称);
八、外键约束——级联操作
1.添加外键时,设置级联更新
alter table employee add constraint emp_dept_fk foreign key (dept_id) references deparment(id) on update cascade;
2.级联删除(部门表删除id为1,员工表对应数据也都删除)
alter table employee add constraint emp_dept_fk foreign key (dept_id) references deparment(id) on delete cascade;
3.设置级联更新和级联删除
alter table employee add constraint emp_dept_fk foreign key (dept_id) references deparment(id) on update cascadeon delete cascade;
4.总结语法:
alter table 表名add constraint 外键名称 foreign key (列名) references 主表名称(主表的列的名称) on update cascadeon delete cascade;