数据库表的外键
来源:互联网 发布:99宿舍客服软件 编辑:程序博客网 时间:2024/06/05 10:22
一.什么是外键
某张表中的列在另外一张表中存储,而且是另一张表的主键列,就可以说该列为外键列,外键列可以有一列或多列,但是只有有主键约束或唯一约束的列才能被其他表引用为外键,并且外键只能引用外键表中对应列的值或空值。
二.外键的作用
避免出现垃圾数据(冗余),保持数据完整性、一致性,提高操作安全性。
三.添加外键约束
主表:被引用的表,外键表。
从表:引用外键的表(存在外键的表)。
语法:
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;
0 0
- 数据库表的外键
- 数据库表的外键约束
- 数据库的外键约束
- 数据库外键的使用
- 数据库外键的使用
- 数据库外键的使用
- 数据库外键的作用
- 数据库外键的作用
- 数据库的外键约束
- 数据库外键的使用
- 数据库外键的使用
- 数据库外键的使用
- 数据库外键的使用
- 数据库外键的取舍
- 解决更新有外键约束的数据库表的外键
- 【数据库】数据库中主键和外键的设计原则
- 显示数据库表间的外键关系
- 查询数据库表的所有外键信息
- 深入理解Java之线程池
- 控制对文件的访问
- 《React-Native系列》44、基于多个TextInput的键盘遮挡处理方案优化
- 利用studio进行Android开发的命名规范TXT
- Spring Cloud微服务 服务消费者
- 数据库表的外键
- android存储访问框架Storage Access Framework
- Ubuntu上Inkscape实现Latex输入方法
- 跟小博老师一起学Servlet ——Servlet之客户端跳转
- 一个web应用的诞生(5)--数据表单
- Ubuntu 16.04+Gtx1050Ti+cuda 8.0+cudnn 5.1 tensorflow 安装
- 关于面试中谈谈你对面向对象思想的认知的小结
- 浅学spring
- Spring Cloud微服务 Spring Boot Admin