Oracle day03 連表查詢

来源:https://www.cnblogs.com/aknife/archive/2019/04/18/10732638.html
-Advertisement-
Play Games

為什麼要表連接進行查詢? 查詢部門名稱為SALES的員工信息 如何進行表的連接查詢? 兩種方式:Sql 1992 和sql1999 sql1992sql分類 1.笛卡爾積 (表乘表) 2.等值連接 表的連接條件使用“=” 3.非等值連接 表的連接條件使用“>、>=、 <、<=、!=、any等” 4. ...


為什麼要表連接進行查詢?

查詢部門名稱為SALES的員工信息

如何進行表的連接查詢?

兩種方式:Sql 1992 sql1999

sql1992
sql分類
    1.笛卡爾積 (表乘表)
    2.等值連接 表的連接條件使用“=”
    3.非等值連接 表的連接條件使用“>、>=、 <、<=、!=、any等”
    4.自連接 自己連接自己
    5.外連接
        1.左外連接,“(+)”在等號右邊
        2.右外連接,“(+)”在等號左邊
        3.“(+)”在哪一邊的列,該表就補充null

--1992
--語法
/*

SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;


where後跟表的連接條件
連接類型:
      1.笛卡爾積 (表X表)

 select * from emp,dept;


      2.等值連接 (列=列)
             --查詢員工的部門名稱      

select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno

      3.非等值連接 (列!=列)
             --查詢員工的薪水等級

select e.ename,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal

 


      4.自連接 (表自己連接自己)
            --查詢員工上司的姓名:以"xxx的上司是xxx"方式顯示

 select e1.ename||'的上司是'|| e2.ename from emp e1,emp e2 where e1.mgr = e2.empno

      5.外連接 (在滿足一張表的內容都顯示的基礎上,連接另外一張表,如果連接匹配則正常顯示,連接不匹配,另外一張表補null)

  select e.ename,d.dname from emp e, dept d where e.deptno = d.deptno (+

            “(+)” 在右邊,我們稱這次查詢為“左外連接查詢”
            “(+)” 在左邊,我們成這次查詢為“右外連接查詢”
            “(+)” 在等號哪一邊,哪張表就補null


--sql 1992 缺點一:表的連接條件和表的過濾放在了一起
--查詢員工工資大於2000的部門名稱

select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno and e.sal >2000

--sql 1992 缺點:外連接不太容易識別

 

sql1999
sql分類
    1.cross join  交叉連接 (笛卡爾積) ,不需要on關鍵字
    2.natural join  自然連接 (找兩個表中相同的列,進行等值匹配),不需要on關鍵字
    3.inner join 內連接
        1)必須有on關鍵字,on表示連接條件
        2)inner關鍵字可以省略
    4.outer join 外連接,outer關鍵字可以省略
        1) left outer join
        2) right outer join
        3) full outer join

--sql 1999

語法:

select a.column,b.column from 表A 連接類型 join 表B on 連接條件


連接類型:
1.CROSS JOIN  交叉連接,就是笛卡爾積

select * from emp cross join dept

2.NATURAL JOIN  自然連接,找到兩張表中具有相同名稱列,進行等值連接

   select * from emp natural join dept

3.INNER JOIN  內連接 (inner關鍵字可以省略)
        --等值連接

  select e.ename,d.dname from emp e  INNER JOIN  dept d on e.deptno = d.deptno where e.sal > 2000


        --非等值連接

   select e.ename,s.grade from emp e INNER JOIN salgrade s on e.sal between s.losal and s.hisal


        --自連接

        select e1.ename || '的上司是' || e2.ename from emp e1 INNER JOIN emp e2 on e1.mgr = e2.empno

 


--外連接(outer關鍵字可以省略)
4.LEFT OUTER JOIN

 select * from emp e LEFT OUTER JOIN dept d on e.deptno = d.deptno


5.RIGHT OUTER JOIN

  select * from emp e RIGHT OUTER JOIN dept d on e.deptno = d.deptno

 

6.FULL OUTER JOIN

 select * from emp e FULL OUTER JOIN dept d on e.deptno = d.deptno

--如何進行多表連接

--查詢員工的姓名、薪水、部門名稱及工資等級

select e.ename, e.sal, d.dname, s.grade
  from emp e, dept d, salgrade s
 where e.deptno = d.deptno
   and e.sal between s.losal and s.hisal
select e.ename, e.sal, d.dname, s.grade
  from emp e
  join dept d
    on e.deptno = d.deptno
  join salgrade s
    on e.sal between s.losal and s.hisal

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 存儲過程的建立和調用 --1.1準備測試需要的資料庫:test,數據表:物料表,採購表if not exists (select * from master.dbo.sysdatabases where name='test')create database testgouse testgoif o ...
  • .1事務 redis中事務是一組命令的集合。 事務同命令一樣都是redis的最小執行單位,Redis保證一個事務中的命令要麼都執行,要麼都不執行。如果redisClient在發送EXEC命令前掉線,則redis會清空事務隊列,事務中的所有命令都不會執行;如果redisClient在發送EXEC命令後 ...
  • 結構化查詢語言SQL在20世紀70年代發展起來之後,很快就成為關係資料庫的標準語言。雖然理解SQL可能很複雜,但幸運的是,有許多書籍可以幫助你快速瞭解SQL。 ...
  • 1.安裝準備: Windows系統環境: 安裝:SQLiteExpert 及 官網的SQLite tool 我們要用到其中的SQLite.exe 地址:https://www.sqlite.org/download.html 2.新建資料庫 打開cmd:鍵入以下命令:D:\sqlite-tools- ...
  • [20190419]shared latch spin count 2.txt--//上午測試shared latch XX模式的情況,鏈接:http://blog.itpub.net/267265/viewspace-2641902/--//繼續測試其它情況.--//鏈接:http://andre ...
  • [20190419]shared latch spin count.txt--//昨天測試exclusive latch spin count = 20000(預設).--//今天測試shared latch spin count的情況,看了一些文章測試等於2 *_spin_count.--//有了 ...
  • Iscsi常用命令(我通過openfiler實現iscsi存儲) # iscsiadm -m discovery -t st -p IP:port //發現iSCSI存儲 # iscsiadm -m node -o delete -T TARGET -p IP:port //刪除iSCSI發現記錄 ...
  • [20190418]exclusive latch spin count.txt--//昨天測試"process allocation" latch,主要這個latch與其它拴鎖spin方式有點不同,但是預設都是spin 20000.如何驗證一直是困擾我的問題.--//而且現在的模式是spin 一定 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...