MySQL约束(二)

一:外键约束;

A表中列的值来自于另外一张表B的主键或唯一键的列称为 外键FK,将被引用值得表称为 主表或父表,将引用值得表称为从表或子表。 例如: emp 表中有 deptno 列,值来自于 de pt 表的 主键 deptno 。 dept 是主表, emp 是从表。

1;创建表时加外键约束;

CREATE TABLE `dept`(
dept_no INT PRIMARY KEY,
dept_name VARCHAR(20),
)
CREATE TABLE `emp` (
`id` int NOT NULL,
`name` varchar(20),
`deptno` int,
CONSTRAINT fk_dept_no FOREIGN KEY(deptno) REFERENCES dept(dept_no)
);

dept 是主表, userinfo 是从表

创建外键时,会在引用表(从表)的字段上建立索引 这个字段上有则不创建

在 ‘从表’ 表中添加或修改时, dept_no 列的值必须是 dept 表中 deptno 字段中的 存在值或者 NULL

删除从表数据时可以直接删除

删除主表数据时,会先检查被删除数据在从表中有没有对此数据的关联(引用),如果 有不能直接删除。

2:外键约束的语法规则;

alter table 表名 add constraint 外键名 foreign key (dept_no) REFERENCES dept(dept_no);

foreign key 表示外键约束

add constraint 表示添加约束

on delete CASCADE / ON DELETE SET NULL级联删除 (更新主键时,外键也会随之更新)

on update CASCADE / ON UPDATE SET NULL级联更新 (删除主键时,外键也随之删除)

3:删除

ALTER TABLE tb_name DROP CONSTRAINT constraint_name;
alter table 表名称 drop foreign key 设置外键时的名称;

二:检查约束

check 检查约束,在数据添加或修改时保证数据的有效性。符合表达式的才会正确执行。

1;创建表时加外键约束;

CREATE TABLE users (
... ,
age INT CHECK (age >= 18)
);
CREATE TABLE users (
... ,
CONSTRAINT chk_xxx CHECK(expr)
);

2:给表中加数据时添加;

ALTER TABLE emp2 MODIFY sal DOUBLE CHECK(sal >= 2000);
ALTER TABLE tb_name ADD CONSTRAINT chk_xx check(id > 10)

3:删除约束

ALTER TABLE tb_name DROP CONSTRAINT tb_chk_num;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值