MySQL常用约束,MySQL外键约束 电脑版发表于:2021/10/16 17:20 ## MySQL常用约束 **什么是约束:** 约束是作用于表中字段的规则,用于限制存储在表中的数据 **约束的作用:** 保证数据库中数据的正确性,有效性,完整性 **主键约束,非空约束,检查约束等,如下的创表约束** ``` create table employee ( id int PRIMARY key auto_increment, name varchar(10) not null UNIQUE, age int CHECK(age>0 && age<=120), status char(1) default(1) check(status=1 or status=0), -- 1表示审核通过,0表示审核失败 sex char(1) ) ``` **添加测试数据** ``` -- 能正确添加数据库的 insert into employee(name,age,status,sex) values('诸葛亮',27,1,'男') insert into employee(name,age,status,sex) values('赵云',37,0,'男') insert into employee(name,age,status,sex) values('黄忠',57,1,'男') -- 违反唯一约束 insert into employee(name,age,status,sex) values('黄忠',57,1,'男') -- 违反为空约束 insert into employee(name,age,status,sex) values(null,57,1,'男') -- 违反检查约束 insert into employee(name,age,status,sex) values('黄租',800,1,'男') insert into employee(name,age,status,sex) values('黄租',80,1,'男') -- 违反检查约束,审核状态必须是0或者 insert into employee(name,age,status,sex) values('黄月英',18,2,'女') ``` ## mysql外键约束 **添加外键约束语法** ``` alter table employee add CONSTRAINT fk_UserClass_Employee_Id FOREIGN key (classId) REFERENCES UserClass(id); ``` **删除外键约束:** ``` alter table users drop FOREIGN key fk_dpet_user_id ``` **外键约束级联删除** ``` alter table employee add CONSTRAINT fk_UserClass_Employee_Id FOREIGN key (classId) REFERENCES UserClass(id) ``` 核心代码: on update CASCADE on delete CASCADE; **实例** 用户表与班级表 ``` -- 创建一个班级表 create table UserClass ( id int PRIMARY key auto_increment, ClassName varchar(32) not null, Position varchar(32) , slogan varchar(32) -- 班级口号 ) insert UserClass(ClassName,Position) values('计网1212','3206') insert UserClass(ClassName,Position) values('计网1213','3211') insert UserClass(ClassName,Position) values('计网1211','3366') ``` 用户表 ``` create table employee ( id int PRIMARY key auto_increment, name varchar(10) not null UNIQUE, age int CHECK(age>0 && age<=120), status char(1) default(1) check(status=1 or status=0), -- 1表示审核通过,0表示审核失败 sex char(1), classId int -- 创建表的时候可以增加外键约束 增加一点 ) ``` 添加与删除外键 ``` -- 在表创建之后增加外键约束 alter table employee add CONSTRAINT fk_UserClass_Employee_Id FOREIGN key (classId) REFERENCES UserClass(id); -- 删除外键 alter table employee drop FOREIGN key fk_UserClass_Employee_Id ``` 创建表的时候添加外键: ``` create table employee ( id int PRIMARY key auto_increment, name varchar(10) not null UNIQUE, age int CHECK(age>0 && age<=120), status char(1) default(1) check(status=1 or status=0), -- 1表示审核通过,0表示审核失败 sex char(1), classId int, CONSTRAINT fk_UserClass_Employee_Id FOREIGN key (classId) REFERENCES UserClass(id) -- classId int REFERENCES UserClass(id) -- 创建表的时候可以增加外键约束 增加一点 ) ```