多表连接时,主从表的确定

       在进行多表的联接查询前,我们需要对多表进行相关的处理,比方说确定主从关系,建立外键,联接时确定中间表等操作.

        一般情况下,建表时先建主表,再建从表,那怎么确定主从关系呢,进一步建立外键约束?

        比方说,有三个表,customers表(customerid--pk,customername),

orders表(orderid--pk,customerid--fk,orderdate)和   //外键一定是定义在从表里,对应到主表里的主键

orderitems表(orderitemid---pk,bookid,quantity,orderid---fk),

        从这张表来看,orders表的customerid列为外键,他来自表customers的主键列customerid,因此这就是我们常说的外键引用主键,被引用的表为主表,引用的表为从表.即customers表为主表,orders表为从表;同样的道理下,orderitems表中的orderid列为外键,来自于(引用)表orders的主键列orderid,故针对这两个表来说,orders表为主表,而orderitems表为从表.

         对于删表的顺序,刚好与建表的次序相反,即对于上面三个表来说,先删表orderitems,再删表orders,最后才能删掉customers表.

        在进行多表联接的查询操作时,我们可以以orders表作为中间表,因为他和其他两个表都有关系.即:

select *

          from orders a join customers c

                        on a.customerid=c.customerid

         join orderitem t

                      on t.orderid=a.orderid

原文地址:https://www.cnblogs.com/sjqq/p/8424489.html