约束的概念
对表中的数据进行限定,保证数据的正确性,有效性和完整性。
约束的分类
- 主键约束:primary key
- 非空约束:not null
- 唯一约束:unique
- 外键约束:foreign key
主键约束 表中的唯一标识
-
主键约束的含义:非空且唯一
-
在创建表时,添加主键约束
CREATE TABLE stu( id int primary key, name varchar(20) not null);
-
创建完表后,添加主键
ALTER TABLE stu MODIFY id primary key;
-
删除主键
ALTER TABLE stu DROP primary key;
-
自动增长:如果某一列是数值类型,使用auto_increment可以完成自动增长。
-- 实现主键的自动增长 CREATE TABLE stu( id int primary key auto_increment, name varchar(20));
-
删除自动增长
ALTER TABLE stu MODIFY id int; -- 这种方式不会删除主键约束
注意:一张表只有一个字段为主键
非空约束 not null(值不能为null)
-
在创建表时添加约束:
CREATE TABLE stu( id int, name varchar(20) NOT NULL);
-
创建表后,添加非空约束
ALTER TABLE stu MODIFY name varchar(20) NOT NULL;
-
删除非空约束
ALTER TABLE stu MODIFY name varchar(20);
唯一约束 unique(值不能重复)
-
创建表时添加唯一约束
CREATE TABLE stu( id int, phone_number varchar(11) unique );
-
在创建表后添加唯一约束
ALTER TABLE stu MODIFY phone_number varchar(11) unique;
-
删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
注意: mysql中 唯一约束限定的列的值可以有多个null。
外键约束
-
创建表时添加外键
CREATE TABLE stu( id int, 外键列 constraint 外键名称 foreign key (外键列名称) references 主表名(主键列名称) );
-
在创建表之后添加外键
ALTER emp ADD constraint 外键名称 foreign key (外键列名称) references 主表名(主键列名称);
-
删除外键
ALTER TABLE emp DROP foreign key 外键名称;级联操作
级联操作
-
设置级联更行:
constraint 外键名称 foreign key (外键列名称) references 主表名(主键列名称) on update cascade;
-
设置级联删除:
constraint 外键名称 foreign key (外键列名称) references 主表名(主键列名称) on delete cascade;