约束演示:
unique adj.唯一的
-- ------------------------------------------------------------------- 约束演示 ----------------------------------------------create table user(id int primary key auto_increment comment '主键',name varchar(10) not null unique comment '姓名',age int check ( age > 0 && age <= 120 ) comment '年龄',status char(1) default '1' comment '状态',gender char(1) comment '性别') comment '用户表';-- 插入数据insert into user(name,age,status,gender) values ('Tom1',19,'1','男'),('Tom2',25,'0','男');insert into user(name,age,status,gender) values ('Tom3',19,'1','男');insert into user(name,age,status,gender) values (null,19,'1','男');insert into user(name,age,status,gender) values ('Tom3',19,'1','男');insert into user(name,age,status,gender) values ('Tom4',80,'1','男');insert into user(name,age,status,gender) values ('Tom5',-1,'1','男');insert into user(name,age,status,gender) values ('Tom5',121,'1','男');insert into user(name,age,gender) values ('Tom5',120,'男');
外键约束:

— 具有外键字段的是子表,被关联的是父表 — 设置了主键可以不用设置not null 和 unique了
-- --------------------------------------------- 约束 (外键) --------------------------------------- 准备数据create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称')comment '部门表';INSERT INTO dept (id, name) VALUES (1, '研发部'), (2, '市场部'),(3, '财务部'), (4, '销售部'), (5, '总经办');create table emp(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',dept_id int comment '部门ID')comment '员工表';INSERT INTO emp (id, name, age, job,salary, entrydate, managerid, dept_id) VALUES(1, '金庸', 66, '总裁',20000, '2000-01-01', null,5),(2, '张无忌', 20, '项目经理',12500, '2005-12-05', 1,1),(3, '杨逍', 33, '开发', 8400,'2000-11-03', 2,1),(4, '韦一笑', 48, '开发',11000, '2002-02-05', 2,1),(5, '常遇春', 43, '开发',10500, '2004-09-07', 3,1),(6, '小昭', 19, '程序员鼓励师',6600, '2004-10-12', 2,1);
设置外键

-- constraint 是约束,限制的意思 -- 添加外键 foreign key是添加emp表中的字段的外键对象,-- dept(id)是要关联表的对象 add constraint后加外键名称alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id); -- references后加 主表名(要关联主键名)-- 关联之后,发现删除不了父表dept的id字段,因为关联了emp的dept_id字段
外键删除更新行为:

-- 删除外键-- fk_emp_dept_id是外键名称alter table emp drop foreign key fk_emp_dept_id;-- cascade 当父表中删除/更新对应记录时,-- 首先检查改记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;-- 当在父表中删除对应记录时,-- 首先检查改记录是否对应外键,如果有则设置子表中改外键为null值(这就要求外键允许null值)alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null ;
