• 内连接和外连接


    内连接和外连接都是表的连接方式(将两张表连接起来

    内连接:等值连接,非等值连接,自连接

    外连接:左连接,右连接

    1.笛卡尔积

    表一和表二做笛卡尔积,就是将表一的每一行和表二的每一行进行拼接

     所有的这些连接都是先将这两张表做笛卡尔积,然后留下其中某些列,删除其他列

    2.内连接

    3.外连接(左连接,右连接)

    (1)Outer是可以省略的

    Left Join=Left Outer Join 即左连接就是左外连接

    Right Join=Right Outer Join 即右连接就是右外连接

    (2)谁是主表?(进行外连接的两张表是有主次关系的)

          主表中即使在另一张表中没有匹配的行,也要返回左表中的行

         a Right Join b,Join关键字右边的表b表是主表

         a Left Join b,Join关键字左边的表a表是主表

    举个例子:下面两张表

     Persons表和Orders表进行笛卡尔积得到:​​​​​​​​​​​​​​

     

     运行Mysql语句:

    1. SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
    2. FROM Persons
    3. LEFT JOIN Orders
    4. ON Persons.Id_P=Orders.Id_P
    5. ORDER BY Persons.LastName

     就是在上面的笛卡尔积中,只保存Persons.Id_P=Orders.Id_P的行(也就是红色四行)

     最后由于是Persons Left Join Orders,所以Persons表是主表,因此Persons表是主表,主表Person表中有些行在Orders表中匹配不到,但是也要添加到最后的结果里面,最后结果为:

     如果是右连接:(也就是主表不再是Persons表了,而是Orders表

    1. SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
    2. FROM Persons
    3. RIGHT JOIN Orders
    4. ON Persons.Id_P=Orders.Id_P
    5. ORDER BY Persons.LastName

     此时要保存的就是主表Orders中没有匹配到的行了(而不是Persons表中没有匹配到的行)

     

    leetcode上例题:

    力扣183  从不订购的客户

     显然2,4号员工是从不订购的客户

    将Customers表和Orders表进行外连接,比如:Customers Left Join Orders 得到:

    1. Select Customers.Name as Customers /* 给最后选出来的列起个别名,否则就叫Name*/
    2. From Customers Left Join Orders
    3. on Customers.Id=Orders.CustomerId

    得到的是:

    +Customers表中没有匹配到的行,也就是:

     所以还要添加一个条件:where Orders.CustomerId Is Null;

    1. Select Customers.Name as Customers /* 给最后选出来的列起个别名,否则就叫Name*/
    2. From Customers Left Join Orders
    3. on Customers.Id=Orders.CustomerId
    4. where Orders.CustomerId Is Null;/*这里where Orders.Id Is Null也是可以的*/

     

  • 相关阅读:
    Vue内置指令——v-bind
    Hadoop生态系统——HiveQL操作实战
    【C++】入门(二):引用、内联、auto
    【单片机基础】89C52单片机串口通信
    各种echarts组件用法总结
    Vue基础面试题(二)
    NFT Insider#110:The Sandbox与T&B Media Global合作,YGG Web3游戏峰会阵容揭晓
    12. 虚拟机与类加载机制
    gin+vue零基础入门教程
    C++引用内联auto关键字等介绍
  • 原文地址:https://blog.csdn.net/weixin_47414034/article/details/126303114