您的位置:首页 > 数据库 > > 正文

mysql如何定义外键(MySQL外键设置的方法实例)

更多 时间:2021-10-18 11:58:15 类别:数据库 浏览量:1024

mysql如何定义外键

MySQL外键设置的方法实例

一、外键设置方法

1、在MySQL中,为了把2个表关联起来,会用到2个重要的功能:外键(FOREIGN KEY)和连接(JOIN)。外键需要在创建表的阶段定义,连接可以通过相同意义的字段把2个表连接起来,用在查询阶段。

2、假设有2个表,分别是表A和表B,它们通过一个公共字段id 发生关联关系,我们把这个关联关系叫做R。如果id在表A中是主键,那么表A就是这个关系R中的主表,相应的,表B就是这个关系中的从表,表B中的id,就是表B用来引用表A中数据的,叫外键。所以,外键就是从表中用来引用主表中数据的那个公共字段。

创建主表

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • CREATE TABLE demo.importhead (
  • listnumber INT PRIMARY KEY,
  • supplierid INT,
  • stocknumber INT,
  • importtype INT,
  • importquantity DECIMAL(10 , 3 ),
  • importvalue DECIMAL(10 , 2 ),
  • recorder INT,
  • recordingdate DATETIME);
  • 创建从表

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • CREATE TABLE demo.importdetails(
  • listnumber INT,
  • itemnumber INT,
  • quantity DECIMAL(10,3),
  • importprice DECIMAL(10,2),
  • importvalue DECIMAL(10,2), -- 定义外键约束,指出外键字段和参照的主表字段
  • CONSTRAINT fk_importdetails_importhead
  • FOREIGN KEY (listnumber) REFERENCES importhead (listnumber)
  • );
  • 运行这个SQL语句,我们就在创建表的同时定义了一个名字叫fk_importdetails_importhead的外键约束,同时,我们声明,这个外键约束的字段listnumber引用的是表importhead里面的字段listnumber。

    创建完成后,我们可以通过SQL语句来查看,这里我们要用到MySQL自带的、用于存储系统信息的数据库:

    information_schema。我们可以查看外键约束的相关信息:

    外键约束所在的表是importdetails,外键字段是listnumber

    参照的主表是importhead,参照主表字段是listnumber,

    这样通过定义外键约束,我们已经建立起了2个表之间的关联关系。

    mysql如何定义外键(MySQL外键设置的方法实例)

    3、连接

    在MySQL中有2种类型的连接,分别是内连接(INNER JOIN)和外连接(OUTER JOIN)

    • 内连接表示查询结果只返回符合连接条件的记录,这种连接方式比较常用;
    • 外连接则不同,表示查询结果返回某一个表中的所有记录,以及另一个表中满足连接条件的记录。

    定义外键时,需要遵守下列规则:

    • 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
    • 必须为主表定义主键。
    • 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
    • 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。
    • 外键中列的数目必须和主表的主键中列的数目相同。
    • 外键中列的数据类型必须和主表主键中对应列的数据类型相同。

    总结

    到此这篇关于MySQL外键设置的文章就介绍到这了,更多相关MySQL外键设置内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!

    原文链接:https://segmentfault.com/a/1190000039788432

    标签:mysql MySQL外键
    您可能感兴趣