数据库表的外键

一.什么是外键

某张表中的列在另外一张表中存储,而且是另一张表的主键列,就可以说该列为外键列,外键列可以有一列或多列,但是只有有主键约束或唯一约束的列才能被其他表引用为外键,并且外键只能引用外键表中对应列的值或空值。

二.外键的作用

避免出现垃圾数据(冗余),保持数据完整性、一致性,提高操作安全性。

三.添加外键约束

主表:被引用的表,外键表。
从表:引用外键的表(存在外键的表)。
语法:
alter table 从表名
add constraint 自定义外键名 foreign key(从表外键列的列名)
references 外键表名(外键表主键列的列名)
[on update SET NULL|NO ACTION|CASCADE|RESTRICT];
例如:
alter table users
add constraint FK_id foreign key(oid)
references offices(id);
在从表中设置外键约束(从表中设置外键)。
自定义外键名:也叫自定义外键约束名,不能使用''(单引号)包含,一般为FK_外键表主键列名。
外键主要是在对标进行删除和更新表时发挥作用:
RESTRICT:默认值,不能删除主表(外键表)或修改外键关联列,除非从表中不存在关联数据,安全性最高。
CASCADE:删除包含已删除键值有关联性的所有记录,删除主表时自动删除从表相关数据,删除从表时主表不变。
NO ACTION:从表没有关联数据,主表才可以删除。

SET NULL:删除主表时自动更新从表对应值为NULL。

注意:RESTRICT与NO ACTION的区别:前一个安全性更高,但是操作都是一样的。

例如:

DROP TABLE IF EXISTS users;

CREATE TABLE users-- 创建从表

(

id INT PRIMARY KEY,-- 主键

uname VARCHAR(10) NOT NULL,

oid INT NOT NULL-- 外键

);

DROP TABLE IF EXISTS offices;

CREATE TABLE offices-- 创建主表

(

id INT PRIMARY KEY,

oname VARCHAR(20) NOT NULL-- 部门名称

);

-- 添加外键约束

ALTER TABLE users

ADD CONSTRAINT FK_id FOREIGN KEY(oid)

REFERENCES offices(id);-- 这里on update默认为RESTRICT

-- 插入数据

INSERT INTO offices VALUES(2,'业务部');--必须先执行这条语句

INSERT INTO users VALUES(2,'李四',2);

四.删除外键约束

语法:

alter table 从表名

drop foreign key 外键名;

外键名:自定义的外键约束名。

例如:

alter table offices

drop foreign key FK_id;



  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值