一、外键
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)
- 内连贯示意查问后果只返回合乎连贯条件的记录,这种连贯形式比拟罕用;
- 外连贯则不同,示意查问后果返回某一个表中的所有记录,以及另一个表中满足连贯条件的记录。