sql入门-约束

约束

作用于表中字段上的规则,用于限制存储在表中的数据

sql入门-约束_第1张图片

 

sql入门-约束_第2张图片

外键增加--删除

sql入门-约束_第3张图片

 

# 创建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);

有外键约束时,主表(父表)删除字段时,主表字段与子表 关联字段是否存在关联关系,存在不允许删除

sql入门-约束_第4张图片

 

No action 和默认一致(存在对应不允许删除更新)

Restrict 和默认一致(存在对应不允许删除更新)

cascade

Setnull 存在关联关系,允许删除-且把子表关联值改为null

非空约束:not null

唯一约束:unique

主键约束:primary key(自增auto_increment)--mysql有效orcale使用(Sequence的对象)

默认约束 default

检查约束 check

外键约束 oreign  key

你可能感兴趣的:(sql,数据库)