数据库(24)——外键约束

概念

外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

具有外键的表称为子表,关联的表称为父表。

语法

添加外键

CREATE TABLE 表名(

字段名 数据类型,

..

[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名);

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名); 

 删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

 示例

  添加外键

  现有两张表user和status,给user添加外键

ALTER TABLE user add constraint fk_user_status foreign key (status) references 

status(id);

添加成功后,字段名称有一个蓝色的小钥匙,代表已经是外键了,此时对status表中的数据进行删除操作,发现无法删除

 删除外键

ALTER TABLE user DROP FOREIGN KEY fk_user_status;

 

蓝色小钥匙不见了,此时删除成功!

删除更新行为

行为 说明
NO ACTION 在父表中删除/更新对应记录时,首先检查是否有对应外键,如果有则不能删除/更新
RESTRICT 在父表中删除/更新对应记录时,首先检查是否有对应外键,如果有则不能删除/更新
CASCADE 在父表中删除/更新对应记录时,首先检查是否有对应外键,如果有则删除子表的记录
SET NULL 在父表中删除对应记录时,首先检查是否有对应外键,如果有则设置子表外键值为NULL
SET DEFAULT 父表有变更时,子表将外键列设置成一个默认的值

 通常情况选默认为前面两种

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;

 设置了之后,当在status表中修改或删除id,user中的外键也会随之改变或删除

 SET NULL同理,这里就不做演示了。

相关推荐

  1. 【PostgreSQL】约束-

    2024-06-06 12:22:01       43 阅读
  2. SQL常见约束约束删除更新行为

    2024-06-06 12:22:01       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 12:22:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 12:22:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 12:22:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 12:22:01       20 阅读

热门阅读

  1. Elasticsearch挂掉后,如何快速恢复数据

    2024-06-06 12:22:01       11 阅读
  2. centos系统上新建用户

    2024-06-06 12:22:01       8 阅读
  3. 渗透测试之Web安全系列教程(一)

    2024-06-06 12:22:01       8 阅读
  4. 游戏心理学Day05

    2024-06-06 12:22:01       8 阅读
  5. 关于django的一些基础问答

    2024-06-06 12:22:01       9 阅读
  6. 6月04日,每日信息差

    2024-06-06 12:22:01       6 阅读
  7. 38、Flink 的 WindowAssigner 之 GlobalWindows 示例

    2024-06-06 12:22:01       7 阅读
  8. Vue实现table左右切换平滑过渡效果

    2024-06-06 12:22:01       10 阅读
  9. Idea可以运行Python!

    2024-06-06 12:22:01       9 阅读
  10. TCL编程

    TCL编程

    2024-06-06 12:22:01      10 阅读
  11. 大数据平台技术选型

    2024-06-06 12:22:01       10 阅读
  12. Flutter_Android上架GooglePlay_问题

    2024-06-06 12:22:01       11 阅读
  13. 设计模式之命令模式

    2024-06-06 12:22:01       9 阅读