zoukankan      html  css  js  c++  java
  • MySQL外键(foreign key)使用及说明详解

    外键也称之为外键约束: foreign key

    外键: 外面的键, 一张表的一个字段(非主键)指向另外一个表的主键, 那么该字段就称之为外键.

    外键所在的表称之为子表(附表); 外键所指向的主键所在的表称之为父表(主表)

    一、增加外键

    将一个表的字段与另外一张表的主键进行关联(实体与实体之间的联系)

    增加外键有两种形式

    方案1: 在创建表的时候就增加外键: 在表字段之后使用foreign key

    foreign key(外键字段) references 主表(主键);

    方案2: 在创建表之后增加外键: 指定外键名字

    alter table 表名 add constraint 外键名 foreign key(外键字段) references 父表(主键字段)

    查看指定的外键名

    外键增加的基础条件: 外键字段必须与引用表(父表主键)的数据类型严格保持一致

    二、删除外键

    外键不能被修改,只能先删除后新增.
    alter table 表名 drop foreign key 外键名;

    三、外键作用

    外键也称之为外键约束: 主要作用在于对数据进行约束.

    约束1: 外键对子表的数据写操作约束: (增加和更新): 如果子表中插入的数据所对应的外键在父表不存在: 不能成功.

    约束2: 外键对父表也有数据约束: 当父表操作一个记录,但是该记录被子表所引用的时候,那么父表的操作将会被限制(更新: 主键和删除)

    四、外键约束

    外键约束: 可以通过在建立外键的时候, 对外键进行约束控制.

    约束控制有三种模式

    • 严格模式: district(默认的)
    • 置空模式: set null,对子表的限制: 当父表删除一个被子表引用的记录的时候,会自动的将子表中对应的父表引用(外键)设置成NULL
    • 级联模式: cascade, 级联操作: 当父表对一个被子表引用的数据进行操作的时候,会自动的连带更新子表对应的数据.(更新操作)

    模式设定语法: 在外键增加之后(foreign key(外键字段) references 父表(主键)),增加on关键字, 指定操作方式和约束模式. 一个常用的约束模式如下
    on update cascade -- 级联操作: 父表更新,子表跟着变
    on delete set null; -- 父表删除, 子表置空

    更新父表主键

    删除父表记录

    外键要增加成功的前提条件

    1. 子表的外键字段的数据类型必须与父表的主键的字段类型要一致
    2. 如果想要在父表进行数据删除的时候, 子表对应的模式为置空: set null,前提是子表对应的外键字段允许为空
    3. 如果是在表创建之后增加外键: 一定要考虑表中的数据是否满足外键条件
  • 相关阅读:
    shell tr命令的使用
    linux find prune排除某目录或文件
    在vue中使用axios发送post请求,参数方式
    webpack官网demo起步中遇到的问题
    css中盒子模型与box-sizing属性
    jquery获得 url的变量
    17-js观察者模式
    基于Jquery ui 可复用的酒店 web页面选择入住日期插件
    webkit浏览器下改变滚动条样式
    用户登录时,禁止chrome提示用户保存密码
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522329.html
Copyright © 2011-2022 走看看