日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Oracle/MySQL数据库的表间关联查询_多表关联查询的SQL语句详解

發布時間:2023/12/3 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle/MySQL数据库的表间关联查询_多表关联查询的SQL语句详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 內連接 inner join
      • 示例
  • 外連接 outer join
    • left outer join 左外連接
      • 示例
    • right outer join 右外連接
      • 示例
    • full outer join 全外連接
      • 示例
    • 外連接總結

內連接 inner join

內連接又稱為等值連接,語法結構:

1 inner join2 on 條件 -- inner可以省略
  • 表 1 叫做驅動表(參照表/匹配表) , 表 2 叫做被匹配表(被參照表)
  • 等值連接方式下 , 驅動表和被匹配表位置可以互換 , 不影響結果集
  • 執行方式:無論誰做驅動表 , 都會遍歷驅動表 , 在被匹配表中查找匹配數據,不匹配的數據舍棄
  • PS.外鍵所在的表叫子表或者從表,主鍵所在的表叫父表或者主表,所謂驅動表,就是必須遍歷的表

    示例

    select ename , dname , location from emp_xxx t1 join dept_xxx t2 --t1 驅動表 , t2 被匹配表 on t1.deptno = t2.deptno ;

    上述連接的方式可以稱之為“顯式內連接”,下面這種方式稱之為“隱式內連接”:

    select ename, dname, location from emp_xxx t1,dept_xxx t2 where t1.deptno = t2.deptno;

    外連接 outer join

    left outer join 左外連接

    左外連接的語法結構:

    1 left outer join2 on 條件 -- outer可以省略

    1.左外連接以左邊的表為驅動表,并且左邊的表的記錄必須全部保留,所以左邊的表亦稱之為保留表。
    2.驅動表和被匹配表不能互換

    示例

    下面的例子中,驅動表:emp_xxx;被匹配表:dept_xxx,結果集中包括有部門的員工和沒有部門的員工:

    select e.empno , ename , d.deptno , d.dname , d.location from emp_xxx e left outer join dept_xxx d on e.deptno = d.deptno ;

    right outer join 右外連接

    右外連接語法結構:

    1 right outer join2 on 條件 -- outer可以省略

    1.右外連接以右邊的表為驅動表,并且右邊的表的記錄必須全部保留,所以右邊的表又稱之為保留表
    2.驅動表和被匹配表不能互換

    示例

    下面的語句中,驅動表:emp_xxx;被匹配表:dept_xxx,結果集中包括有部門的員工和沒有部門的員工:

    select e.empno , ename , d.deptno , d.dname , d.location from dept_xxx d right outer join emp_xxx e on e.deptno = d.deptno ;

    full outer join 全外連接

    全外連接語法結構:

    1 full outer join2 on 條件

    1.全外連接左右兩張表互為驅動表和被匹配表,即兩張表都會遍歷一遍
    2.全外連接可以把兩個表中的記錄全部查出來。左右兩張表的記錄全部都保留,即兩張表都是保留表
    3.全外連接的結果集 = 內連接的結果集 + 兩張表找不到匹配數據的記錄(對應的被匹配表的字段為空值)

    示例

    select e.empno , e.ename , d.deptno , d.dname from emp_xxx e full outer join dept_xxx d on e.deptno = d.deptno ;

    外連接總結

    1.如果驅動表在被匹配表中找不到匹配記錄 , 則匹配一行空行
    2.外連接的結果集 = 內連接的結果集 + 驅動表在被匹配表中匹配不上的記錄(對應被匹配表的字段都是空值)
    3.外連接的本質是驅動表中的數據一個都不能少
    4.寫外連接的習慣:

    a.先寫內連接

    from1 join2 on 條件

    b.再確定誰做驅動表,從而決定寫 left、right、full
    關鍵是確定誰做驅動表

    總結

    以上是生活随笔為你收集整理的Oracle/MySQL数据库的表间关联查询_多表关联查询的SQL语句详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。