约束
* 对表中的数据进行限定,保证数据的正确性、有效性和完整性。
* 分类:
1. 主键约束: primary key
2. 非空约束: not null
3. 唯一约束: unique
4. 外键约束: foreign key
* 非空约束:
1.创建时添加
create table student (
id int,
name varchar(32) not null
);
2.创建表完后,修改
alter table student modify name varchar(32) not null;
3.删除非空约束
alter table student modify name varchar(32);
* 唯一约束:值不能重复,但是null可以出现多个
1.创建时添加
2.修改
alter table student modify phone_number varchar(20) unique;
3.删除唯一约束
alter table student drop index phone_number;
* 主键约束:非空且唯一,一张表只能有一个主键。表中记录的唯一标识。
1.创建时添加主键
create table student (
id int primary key, 给id添加主键
name varchar(32) not null
);
2.修改
alter table student modify id int primary key;
3.删除主键
alter table student drop primary key;
4.自动增长:如果某一列是数值类型的,使用auto_increment可以完成值的自动增长。
create table student (
id int primary key auto_increment, 给id添加主键
name varchar(32) not null
);
* 外键约束
1.创建时添加外键
create table student (
id int primary key, 给id添加主键
name varchar(32) not null
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
create table employee(id int primary key auto_increment,name varchar(20),age int,dep_id int,constraint emp_dept foreign key(dep_id) references employee(id));
2.删除外键
alter table employee drop foreign key emp_dept;
3.添加外键(引用时最好引用主键或者唯一值)
不然会出现:1215 - Cannot add foreign key constraint
alter table employee add constraint emp_dept foreign key(dep_id) references department(id)
4.级联:
如果设置时有问题,检查所设置的键的值是否匹配
设置级联更新
alter table employee add constraint emp_dept foreign key(dep_id) references department(id) on update cascade;
设置级联删除
alter table employee add constraint emp_dept foreign key(dep_id) references department(id) on update cascade on delete cascade;