约束
作用于表中字段上的规则,用于限制存储在表中的数据
外键增加--删除
# 创建dept
-- 主表
create table dept (
id int primary key auto_increment comment 'id',
name varchar(50) unicode comment '部门名称'
)comment '部门表';
insert into dept(name) values ('研发部'),('市场部'),('财务部'),('销售部'),('总经办');
-- 子表
create table emp(
id int auto_increment primary key comment 'id',
name varchar(50) not null comment '姓名',
age int check ( age > 0 && age < 120) comment '年龄',
job varchar(50) comment '职位',
salary int comment '薪资',
entrydate date comment '入职时间',
mangerid int comment '直属领导id',
det_id int comment '部门id'
) comment '员工表';
insert into emp(id,name,age,job,salary,entrydate,mangerid,det_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);
-- 添加外键
alter table emp add constraint emp_dept_id foreign key(det_id) references dept(id);
有外键约束时,主表(父表)删除字段时,主表字段与子表 关联字段是否存在关联关系,存在不允许删除
No action 和默认一致(存在对应不允许删除更新)
Restrict 和默认一致(存在对应不允许删除更新)
cascade
Setnull 存在关联关系,允许删除-且把子表关联值改为null
非空约束:not null
唯一约束:unique
主键约束:primary key(自增auto_increment)--mysql有效orcale使用(Sequence的对象)
默认约束 default
检查约束 check
外键约束 oreign key