數(shù)據(jù)庫關聯(lián)檢索_第1頁
數(shù)據(jù)庫關聯(lián)檢索_第2頁
數(shù)據(jù)庫關聯(lián)檢索_第3頁
數(shù)據(jù)庫關聯(lián)檢索_第4頁
數(shù)據(jù)庫關聯(lián)檢索_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)庫關聯(lián)檢索第一頁,共二十九頁,2022年,8月28日第六章關聯(lián)檢索

第二頁,共二十九頁,2022年,8月28日本章主要內(nèi)容6.1前言了解關聯(lián)查詢6.2笛卡爾關聯(lián)描述概念。6.3相等關聯(lián)描述概念以及應用。6.4自我關聯(lián)了解概念以及應用方式。6.5外部關聯(lián)了解概念以及應用方式。第三頁,共二十九頁,2022年,8月28日本章主要內(nèi)容6.6集合運算掌握運算概念和應用。6.7總結(jié)第四頁,共二十九頁,2022年,8月28日6.1前言

本章主要介紹表關聯(lián)查詢的方式。由于在實際開發(fā)過程中,關聯(lián)查詢是占很大比重的。同時我們需要注意表關聯(lián)中,傳統(tǒng)寫法和JOIN寫法的區(qū)別。兩種方式在開發(fā)中的應用都比較廣泛。第五頁,共二十九頁,2022年,8月28日6.2笛卡爾關聯(lián)

當檢索時,使用多個表時,如果條件不完全,輸出的結(jié)果就會有規(guī)則的出現(xiàn)重復數(shù)據(jù)。而這種重復結(jié)果集就是笛卡爾乘積我們把這種關聯(lián)方式叫笛卡爾關聯(lián)。第六頁,共二十九頁,2022年,8月28日從多個表中獲取數(shù)據(jù)TBL_SCOREINFO

TBL_CLASSINFO

SELECTA.CLASSNO,B.CLASSNAME,B.SCOREFROMTBL_SCOREINFOA,TBL_CLASSINFOB第七頁,共二十九頁,2022年,8月28日笛卡爾集笛卡爾集會在下面條件下產(chǎn)生:省略連接條件連接條件無效所有表中的所有行互相連接為了避免笛卡爾集,可以在WHERE加入有效的連接條件。第八頁,共二十九頁,2022年,8月28日6.3相等關聯(lián)

最常用的聯(lián)接類型是對一個公共列中存儲了相同數(shù)據(jù)的幾個表創(chuàng)建的,這種聯(lián)接稱為相等關聯(lián)。注意:多表關聯(lián)中,追加的條件應該是可以唯一確定關聯(lián)表的數(shù)據(jù).如果不能唯一,或出現(xiàn)笛卡爾集合的話,肯定是有條件沒有追加完全。第九頁,共二十九頁,2022年,8月28日等值連接TBL_SCOREINFO

TBL_CLASSINFO外鍵主鍵第十頁,共二十九頁,2022年,8月28日SELECTA.STUNO,A.CLASSNO,B.CLASSNO,B.CLASstuname,A.SCOREFROMTBL_SCOREINFOA,TBL_CLASSINFOBWHEREA.CLASSNO=B.CLASSNO;等值連接第十一頁,共二十九頁,2022年,8月28日連接多個表EMPLOYEESLOCATIONSDEPARTMENTS連接n個表,至少需要n-1個連接條件。例如:連接三個表,至少需要兩個連接條件。…第十二頁,共二十九頁,2022年,8月28日使用ON子句創(chuàng)建連接可以使用ON子句指連接條件。這個連接條件是與其它條件分開的。ON子句使語句具有更高的易讀性。第十三頁,共二十九頁,2022年,8月28日SELECT

S.stuname,C.classno,C.Score

From

tbl_scoreASCJOIN

tbl_studentinfoASSON

C.stuno=S.stunoTbl_scoreinfostunoclassnoScore05001050020500205003001001002002978967760500300381這樣寫,返回的查詢結(jié)果是一樣的嗎?SELECT

S.stuname,C.classno,C.Score

From

tbl_studentinfoASSJOIN

tbl_scoreASCON

C.stuno=S.stuno以下返回多少行?SELECT

S.stuname,C.classno,C.Score

From

tbl_studentinfoASSJOIN

ScoreASCON

C.stuno<>S.stunoTbl_studentinfostuname梅超風陳玄風陸乘風曲靈風stuno05001050020500305004查詢結(jié)果stuname梅超風陳玄風陳玄風陸乘風classnoscore00100100200297896776陸乘風00381第十四頁,共二十九頁,2022年,8月28日多表聯(lián)結(jié)查詢SELECT

S.stunameAS姓名,CS.classNameAS課程,C.ScoreAS成績FROMtbl_studentinfoASSJOINtbl_scoreinfoASCON(S.stuno=C.stuno)JOINtbl_classinfoASCSON(CS.classno=C.classno)第十五頁,共二十九頁,2022年,8月28日TBL_STUDENTINFO(UPSTUNO)TBL_STUDENTINFO(STUNO)TBL_STUDENTINFO表中的UPSTUNO

CLASSNO相等6.4自我關聯(lián)

自我關聯(lián)的兩個表,其實就是一個表,只是根據(jù)業(yè)務的需要,看成兩個不同的表第十六頁,共二十九頁,2022年,8月28日自連接SELECTA.STUNAME||'的小組長為:'||B.STUNAMEFROMTBL_STUDENTINFOA,TBL_STUDENTINFOBWHEREA.UPSTUNO=B.STUNO第十七頁,共二十九頁,2022年,8月28日6.5外部關聯(lián)

當用戶需要查詢結(jié)果中包括存在于一個表中但是在另一個表中沒有對應的記錄的時候,就需要使用外部關聯(lián)查詢了。需要注意的是外部關聯(lián)的傳統(tǒng)方法在DB2中是不支持的,DB2只支持JOIN的方法。第十八頁,共二十九頁,2022年,8月28日內(nèi)連接與外連接內(nèi)連接只返回滿足連接條件的數(shù)據(jù)。兩個表在連接過程中除了返回滿足連接條件的行以外還返回左(或右)表中不滿足條件的行,這種連接稱為左(或右)外聯(lián)接。兩個表在連接過程中除了返回滿足連接條件的行以外還返回兩個表中不滿足條件的行,這種連接稱為滿外聯(lián)接。第十九頁,共二十九頁,2022年,8月28日外連接語法使用外連接可以查詢不滿足連接條件的數(shù)據(jù)。第二十頁,共二十九頁,2022年,8月28日ScorestunoclassnoScore05001050020500205003001001002002978967760500300381多表聯(lián)結(jié)查詢—左外聯(lián)結(jié)Stundentsstuname梅超風陳玄風陸乘風曲靈風stuno05001050020500305004查詢結(jié)果stuname梅超風陳玄風陳玄風陸乘風classnoScore00100100200297896776陸乘風00381曲靈風NULLNULL這樣寫,返回的查詢結(jié)果是一樣的嗎?SELECT

S.stuname,C.classno,C.Score

From

tbl_scoreinfoASCLEFTJOIN

tbl_studentinfoASSON

C.stuno=S.stunoSELECT

S.stuname,C.classno,C.Score

From

tbl_studentinfoASSLEFTJOIN

tbl_scoreinfoASCON

C.stuno=S.stuno第二十一頁,共二十九頁,2022年,8月28日多表聯(lián)結(jié)查詢—右外聯(lián)結(jié)SELECTtbl_scoreinfo.Title_id,tbl_scoreinfo.Title,Publishers.Pub_nameFROMtbl_scoreinfoRIGHTOUTERJOINPublishersONtbl_scoreinfo.Pub_id=Publishers.Pub_id第二十二頁,共二十九頁,2022年,8月28日6.6集合運算

在數(shù)據(jù)庫查詢中我們有時需要將數(shù)據(jù)庫的檢索結(jié)果集進行合并,則這個時候需要用到集合運算(UNION與UNIONALL)。查詢參加日語和英語考試的學生成績(參看例6.9)。方式1:

SELECTA.stuname,B.classname,C.scoreFROMtbl_studentinfoA,tbl_classinfoB,tbl_scoreinfoCWHEREA.stuno=C.stunoANDB.classno=C.classnoANDB.classnamein('英語','日語');第二十三頁,共二十九頁,2022年,8月28日6.6集合運算

方式2:SELECTA.stuname,B.classname,C.scoreFROMtbl_studentinfoA,tbl_classinfoB,tbl_scoreinfoCWHEREA.stuno=C.stunoANDB.classno=C.classnoAND(B.classname='英語'ORB.classname='日語')第二十四頁,共二十九頁,2022年,8月28日6.6集合運算

方式3:SELECTA.stuname,B.classname,C.scoreFROMtbl_studentinfoA,tbl_classinfoB,tbl_scoreinfoCWHEREA.stuno=C.stunoANDB.classno=C.classnoANDB.classname='英語'UNIONALLSELECTA.stuname,B.classname,C.scoreFROMtbl_studentinfoA,tbl_classinfoB,tbl_scoreinfoCWHEREA.stuno=C.stunoANDB.classno=C.classnoANDB.classtuname='日語'第二十五頁,共二十九頁,2022年,8月28日6.6集合運算

查詢參加日語和英語考試的學生成績,結(jié)果按照課程與成績降序排序SELECTstuname,classtuname,scoreFROM( SELECTA.stuname,B.classname,C.score FROMtbl_studentinfoA,tbl_classinfoB,tbl_scoreinfoC WHEREA.stuno=C.stuno ANDB.classno=C.classno ANDB.classno='002' UNIONALL SELECTd.stuname,e.classname,f.score FROMtbl_studentinfod,tbl_classinfoe,tbl_scoreinfof WHEREd.stuno=f.stuno ANDe.classno=f.classno ANDe.classno='003')ORDERBYclasstuname,scoreDESC;第二十六頁,共二十九頁,2022年,8月28日6.6集合運算

注意:

1.UNION,UNIONALL集合運算很多情況下可以和OR,IN語句互換。

2.UNION與UNIONALL的區(qū)別只有一點,UNION會對合并后的結(jié)果集進行重復

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論