




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本章主要內容6.6 集合運算 掌握運算概念和應用。6.7 總結6.1 前言 本章主要介紹表關聯查詢的方式。 由于在實際開發過程中,關聯查詢是占很大比重的。 同時我們需要注意表關聯中,傳統寫法和JOIN寫法的區別。 兩種方式在開發中的應用都比較廣泛。 6.2 笛卡爾關聯 當檢索時,使用多個表時,如果條件不完全,輸出的結果就會有規則的出現重復數據。 而這種重復結果集就是笛卡爾乘積我們把這種關聯方式叫笛卡爾關聯 。從多個表中獲取數據TBL_SCOREINFO TBL_CLASSINFO SELECT A.CLASSNO,B.CLASSNAME,B.SCOREFROM TBL_SCOREINFO A,
2、TBL_CLASSINFO B笛卡爾集 笛卡爾集會在下面條件下產生: 省略連接條件 連接條件無效 所有表中的所有行互相連接 為了避免笛卡爾集, 可以在 WHERE 加入有效的連接條件。6.3 相等關聯 最常用的聯接類型是對一個公共列中存儲了相同數據的幾個表創建的, 這種聯接稱為相等關聯。注意: 多表關聯中,追加的條件應該是可以唯一確定關聯表的數據.如果不能唯一,或出現笛卡爾集合的話,肯定是有條件沒有追加完全。等值連接TBL_SCOREINFO TBL_CLASSINFO外鍵主鍵SELECT A.STUNO,A.CLASSNO,B.CLASSNO,B.CLASstuname,A.SCORE FR
3、OM TBL_SCOREINFO A,TBL_CLASSINFO BWHERE A.CLASSNO = B.CLASSNO;等值連接連接多個表EMPLOYEES LOCATIONS DEPARTMENTS 連接 n個表,至少需要 n-1個連接條件。 例如:連接三個表,至少需要兩個連接條件。使用ON 子句創建連接 可以使用 ON 子句指連接條件。 這個連接條件是與其它條件分開的。 ON 子句使語句具有更高的易讀性。SELECT S.stuname,C.classno,C.Score From tbl_score AS CJOIN tbl_studentinfo AS SON C.stuno =
4、S.stunoTbl_scoreinfo05001050020500205003001001002002978967760500300381這樣寫,返回的查詢結果是一樣的嗎?SELECT S.stuname,C.classno,C.Score From tbl_studentinfo AS SJOIN tbl_score AS CON C.stuno = S.stuno以下返回多少行?SELECT S.stuname,C.classno,C.Score From tbl_studentinfo AS SJOIN Score AS CON C.stuno S.stunoTbl_studentin
5、fo梅超風陳玄風陸乘風曲靈風05001050020500305004查詢結果梅超風陳玄風陳玄風陸乘風00100100200297896776陸乘風00381多表聯結查詢SELECT S.stuname AS 姓名, CS.className AS 課程, C.Score AS 成績FROM tbl_studentinfo AS S JOIN tbl_scoreinfo AS C ON (S.stuno = C.stuno)JOIN tbl_classinfo AS CS ON (CS.classno = C.classno)TBL_STUDENTINFO (UPSTUNO)TBL_STUDEN
6、TINFO(STUNO)TBL_STUDENTINFO 表中的UPSTUNO 和 CLASSNO相等6.4 自我關聯 自我關聯的兩個表,其實就是一個表,只是根據業務的需要,看成兩個不同的表自連接SELECT A.STUNAME |的小組長為:|B.STUNAMEFROM TBL_STUDENTINFO A,TBL_STUDENTINFO BWHERE A.UPSTUNO = B.STUNO6.5 外部關聯 當用戶需要查詢結果中包括存在于一個表中但是在另一個表中沒有對應的記錄的時候,就需要使用外部關聯查詢了。需要注意的是外部關聯的傳統方法在DB2中是不支持的,DB2只支持JOIN的方法。內連接
7、與 外連接 內連接只返回滿足連接條件的數據。 兩個表在連接過程中除了返回滿足連接條件的行以外還返回左(或右)表中不滿足條件的行 ,這種連接稱為左(或右) 外聯接。 兩個表在連接過程中除了返回滿足連接條件的行以外還返回兩個表中不滿足條件的行 ,這種連接稱為滿 外聯接。外連接語法 使用外連接可以查詢不滿足連接條件的數據。Score05001050020500205003001001002002978967760500300381多表聯結查詢左外聯結Stundents梅超風陳玄風陸乘風曲靈風05001050020500305004查詢結果查詢結果梅超風陳玄風陳玄風陸乘風001001002002978
8、96776陸乘風00381曲靈風NULLNULL這樣寫,返回的查詢結果是一樣的嗎?SELECT S.stuname,C.classno,C.Score From tbl_scoreinfo AS CLEFT JOIN tbl_studentinfo AS SON C.stuno = S.stunoSELECT S.stuname,C.classno,C.Score From tbl_studentinfo AS SLEFT JOIN tbl_scoreinfo AS CON C.stuno = S.stuno多表聯結查詢右外聯結SELECT tbl_scoreinfo.Title_id, tb
9、l_scoreinfo.Title, Publishers.Pub_nameFROM tbl_scoreinfo RIGHT OUTER JOIN Publishers ON tbl_scoreinfo.Pub_id = Publishers.Pub_id6.6 集合運算 在數據庫查詢中我們有時需要將數據庫的檢索結果集進行合并,則這個時候需要用到集合運算(UNION與UNION ALL)。 查詢參加日語和英語考試的學生成績(參看例6.9)。 方式1: SELECT A.stuname, B.classname, C.scoreFROM tbl_studentinfo A, tbl_classi
10、nfo B, tbl_scoreinfo CWHERE A.stuno = C.stunoAND B.classno = C.classnoAND B.classname in (英語,日語);6.6 集合運算 方式2: SELECT A.stuname, B.classname, C.score FROM tbl_studentinfo A, tbl_classinfo B, tbl_scoreinfo C WHERE A.stuno = C.stuno AND B.classno = C.classno AND (B.classname =英語 OR B.classname =日語)6.6
11、 集合運算 方式3:SELECT A.stuname, B.classname, C.scoreFROM tbl_studentinfo A, tbl_classinfo B, tbl_scoreinfo CWHERE A.stuno = C.stunoAND B.classno = C.classnoAND B. classname = 英語UNION ALLSELECT A.stuname, B.classname, C.scoreFROM tbl_studentinfo A, tbl_classinfo B, tbl_scoreinfo CWHERE A.stuno = C.stunoA
12、ND B.classno = C.classnoAND B. classtuname = 日語6.6 集合運算 查詢參加日語和英語考試的學生成績,結果按照課程與成績降序排序 SELECT stuname, classtuname, scoreFROM (SELECT A.stuname, B.classname, C.score FROM tbl_studentinfo A, tbl_classinfo B, tbl_scoreinfo CWHERE A.stuno = C.stuno AND B.classno = C.classno AND B. classno = 002 UNION ALL SELECT d.stuname, e.classname, f.score FROM tbl_studentinfo d, tbl_classinfo e, tbl_scoreinfo f WHERE d.stuno = f.stuno AND e.classno = f.classno AND e. classno = 003)ORDER BY classtuname, score DESC;6.6 集合運算 注意 : 1. UNION ,UNIONALL 集合運算很多情況下可以和OR, IN語句互換。 2. UNION 與UNION ALL的區別只有一點,UNION會對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年江西新余高新區招聘考試筆試試題(含答案)
- 書柜與魚缸創新融合創新創業項目商業計劃書
- 醫用高值耗材AI智能設備行業深度調研及發展項目商業計劃書
- 主題圖書系列出版行業跨境出海項目商業計劃書
- 高山攀巖訓練行業跨境出海項目商業計劃書
- 高爾夫度假游企業制定與實施新質生產力項目商業計劃書
- 六年級美術上冊第7課箱板上的新發現教案人美版
- 江蘇專版2025版高考語文一輪復習“古詩歌閱讀”仿真綜合練含解析
- 十三、(危險性較大工程預防監控措施及應急預案)
- 雙控體系管理制度匯編
- 早產兒腸內營養管理專家共識2024年解讀
- 隔音砂漿銷售合同協議
- 2025-2030全球及中國GPON技術行業市場現狀供需分析及投資評估規劃分析研究報告
- 2024年浙江高考化學真題(1月)試題試卷原卷答案解析
- 二年級下冊數學-認識鐘表練習題合集
- 2025-2030中國IDC行業發展趨勢與前景展望戰略研究報告
- 房車租賃合同協議
- 2025年普通高等學校招生全國統一考試語文試卷答案
- DB44-T 2623-2025 道路工程高韌超薄磨耗層技術規范
- 婚禮司儀主持培訓
- 江蘇省2024年普通類本科批次平行志愿投檔線(物理等科目類)
評論
0/150
提交評論