一、外键

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

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

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

尊宝雷
15 声望0 粉丝