乐趣区

关于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 中数据的,叫外键。所以,外键就是从表中用来援用主表中数据的那个公共字段。

  • 创立主表

    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);
  • 创立从表

    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 个表之间的关联关系。

3、连贯
在 MySQL 中有 2 种类型的连贯,别离是内连贯(INNER JOIN)和外连贯(OUTER JOIN)

  • 内连贯示意查问后果只返回合乎连贯条件的记录,这种连贯形式比拟罕用;
  • 外连贯则不同,示意查问后果返回某一个表中的所有记录,以及另一个表中满足连贯条件的记录。
退出移动版