日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2023/12/3 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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语句详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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