当前位置: 首页 > news >正文

数据库外键

在MySQL中,我们对主键比较了解,知道主键的主要作用是唯一区分表中的各个行,但是外键(foreign key)是什么呢?

1 外键

1.1 外键的定义

外键是表中的某一列,它包含在另一个表的主键中。

外键也是索引的一种,是通过一张表中的一列指向另一张表中的主键,来对两张表进行关联。

1.2 外键的作用

外键的主要作用是保证数据的一致性和完整性,减少数据的冗余,主要体现在以下两个方面

阻止执行

  • 从表插入新行,其外键不是主表中的主键值便阻止插入;
  • 从表修改外键值,新值不是主表的主键值便阻止修改;
  • 主表删除行,其主键值在从表里存在则阻止删除;
  • 主表修改主键值,旧值在从表中存在便阻止修改。

级联执行

  • 主表删除行,连带从表的相关行一起删除;
  • 主表修改主键值,连带从表相关行一起修改

1.3 外键创建限制

  • 父表必须已经存在于数据库中;
  • 必须为父表定义主键;
  • 外键中列的数目必须与父表的主键中列的数目相同;
  • 两个表必须是InnoDB表,MyISAM暂时不支持外键

2 创建外键

  • 创建外键的语法

    ALTER TABLEADD CONSTRAINT外键名
    FOREIGN KEY(外键字段名)
    REFERENCES 主表表名(主键字段名)
    [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
    [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
    

    其中 ON DELETE 和 ON UPDATE 表示事件触发限制.

    参数意义
    RESTRICT限制主表中的外键改动,默认值
    CASCADE跟随外键改动
    SET NULL设为null值
    NO ACTION无动作
    SET DEFAULT设为默认值
    alter table `doc`add constraint doc_idforeign key (id)references document(id)on delete cascade;
    
  • 创建后,可以查看当前表结构

    show create table 表名
    
  • 删除外键

    ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
    

相关文章:

  • 测试W5500的第3步_使用ioLibrary库创建TCPServer
  • Flink并行数据源:ClickSource实现详解
  • RISC-V 开发板 MUSE Pi Pro USB 测试(3.0 U盘,2.0 UVC摄像头)
  • 边缘智能与量子计算双轮驱动:IVX 开启实时 AI 开发新维度
  • Runtipi - 开源个人家庭服务器管理工具
  • 通义灵码助力JavaScript开发:快速获取API与智能编码技巧
  • 【信息系统项目管理师】第12章:项目质量管理 - 26个经典题目及详解
  • 绿盟防火墙6.0.5版本—接入网监平台
  • 对冲策略加仓止损盈思路
  • Hbuilder X4.65新建vue3项目存在的问题以及解决办法
  • 贝叶斯优化+CNN+LSTM=小论文创新点
  • 【LinkedList demo 内部类讲说】
  • 【基于SpringBoot的图书购买系统】深度讲解 分页查询用户信息,分析前后端交互的原理
  • Linux(3)——基础开发工具
  • 威纶通触摸屏IP地址设定步骤及程序下载指南
  • Nginx笔记
  • 传输层协议:UDP和TCP
  • Unity3D仿星露谷物语开发46之种植/砍伐橡树
  • 【Redis】跳表结构
  • Pytorch分布式训练,数据并行,单机多卡,多机多卡
  • 美媒:鲁比奥称特朗普不出席二十国集团领导人会议
  • 联合国妇女署:超过2.8万名妇女和女童在加沙战火中丧生
  • 90后青年学者李海增逝世9个月后文章登上顶刊,同仁缅怀其贡献
  • 国家发改委谈稳定外资:将研究制定鼓励外资企业境内再投资政策措施
  • 讲述“外国货币上的中国故事”,《世界钱币上的中国印记》主题书刊出版发布
  • 确诊前列腺癌后,拜登首次发声