Knowledge note
04-约束
#概述

create table user_02(
id int primary key auto_increment comment '主键',
name varchar(10) not null unique comment '姓名',
age int check ( age>0&&user.age<=120 )comment '年龄',
status char(1) default(1) comment '状态',
gender char(1) comment '性别'
)comment '用户表'
insert into user_02(name, age, user_02.status,gender)values ('王涛',25,'1','男'),
('刘婷',23,1,'女'),('张伟',24,0,'男');
-- 姓名不能为空
insert into user_02(name, age, user_02.status,gender)values ('',19,'1','男');
-- 姓名不能重复
INSERT into user_02(name, age, status, gender) values ('王涛',26,'1','男');
-- 年龄满足0-120这个范围
insert into user_02(name, age, status, gender) VALUES ('小美',201,'1','女');
-- 状态默认是1
insert into user_02(name, age, gender) values ('狮子王',25,'男');
#外键约束

-- -----------约束外键------------
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,'销售部');
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,'韦一笑',48,'开发',110000,'2002-02-05',2,1),
(4,'常遇春',43,'开发',10500,'2004-09-07',3,1),
(5,'小昭',19,'程序员鼓励师',6600,'2004-10-12',2,1);
#添加外键

-- 添加外键
alter table emp add constraint fk_emp_dept_id foreign key (dept_id)references dept(Id);
-- 删除外键
alter table emp drop foreign key fk_emp_dept_id;
#删除和更新行为


-- 子表外键的同步删除和更新行为
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on UPDATE cascade on DELETE cascade ;
-- 主表删除对应记录,子表外键置空
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on UPDATE set null on DELETE set null ;