当前位置:Gxlcms > 数据库问题 > MySQL之外键约束(FOREIGN KEY)

MySQL之外键约束(FOREIGN KEY)

时间:2021-07-01 10:21:17 帮助过:2人阅读

  • 外键中列的数据类型必须和父表主键中对应列的数据类型相同。
  • 设置外键约束:

    1、创建表时添加外键约束

    语法规则如下:

    [CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
    REFERENCES <主表名> 主键列1 [,主键列2,…]

    其中:<外键名>为定义的外键约束的名称,一个表中不能有相同名称的外键;<字段名>表示子表需要添加外健约束的字段列;<主表名>即被子表外键所依赖的表的名称;<主键列>表示主表中定义的主键列或者列组合。

    【实例 1】创建一个名为test_dept1的表作为父表

    技术图片

     

     

     技术图片

     

     

     技术图片

     

     

    创建数据表 tb_emp6,并在表 tb_emp6 上创建外键约束,让它的键 deptId 作为外键关联到表 tb_dept1 的主键 id

     技术图片

     

     

     技术图片

     

     

     技术图片

     

     

     fk_emp_dept1 为外键约束,外键名称为 deptId,其依赖于表 tb_dept1 的主键 id。

    提示:关联指的是关系数据库中,相关表之间的联系。它是通过相同的属性或属性组来表示的。子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型不一样,则创建子表时会出现错误“ERROR 1005(HY000):Can‘t create table‘database.tablename‘(errno:150)”。

    2、在修改数据表时添加外键约束

    语法规则为:

    ALTER TABLE <数据表名> ADD CONSTRAINT <索引名>
    FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);

    【实例 2】修改数据表 tb_emp3,将字段 deptId 设置为外键,与数据表 tb_dept1 的主键 id 进行关联

    技术图片

     

     

     同一个数据库中的外键约束名称不能重复,否则会报错技术图片

     

     

    删除外键约束:

     对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表和从表间的关联关系,MySQL 中删除外键的语法格式如下:

    ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;

    【实例 3】删除数据表 tb_emp3 中的外键约束 fk_em_dept1

    删除前:

    技术图片

     

     

    技术图片

     

     

     删除后:

    技术图片

     

    技术图片

     

     技术图片

     

     tb_emp3 中已经不存在 FOREIGN KEY,原有的名称为 fk_emp_dept 的外键约束删除成功。

     

    MySQL之外键约束(FOREIGN KEY)

    标签:mysq   add   现在   包含   block   nbsp   格式   属性   修改   

    人气教程排行