查詢聯結查詢_第1頁
查詢聯結查詢_第2頁
查詢聯結查詢_第3頁
查詢聯結查詢_第4頁
查詢聯結查詢_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

查詢聯結查詢第1頁,課件共34頁,創(chuàng)作于2023年2月聯接查詢查詢男生的學號、姓名、課程名稱和成績,并按成績從高到低排序。引例:第2頁,課件共34頁,創(chuàng)作于2023年2月涉及的表及字段TEACHER(TNO,TNAME,CNO,SAL,DNAME,TSEX,AGE)COURSE1(CNO,CNAME,CTIME,SCOUNT,CTEST)STUDETN1(SNO,SNAME,DNAME,SSEX,CNO,MARK,TYPE)第3頁,課件共34頁,創(chuàng)作于2023年2月第4頁,課件共34頁,創(chuàng)作于2023年2月1第5頁,課件共34頁,創(chuàng)作于2023年2月1第6頁,課件共34頁,創(chuàng)作于2023年2月聯接查詢的實現

在FROM中指定表,在WHERE子句中指定聯結條件使用JOIN關鍵字,即在FROM子句中實現聯結聯結查詢第7頁,課件共34頁,創(chuàng)作于2023年2月聯結查詢創(chuàng)建表的基本聯結,需要遵守的基本原則:FROM子句中列出所有聯結的表的表名。WHERE子句中定義聯結條件。當列名為多個表共有時,要指明列的所在表。第8頁,課件共34頁,創(chuàng)作于2023年2月1.連接查詢的語法結構連接查詢中用來連接兩個表的條件稱為連接條件或連接謂詞,其形式為:

[<表1>].<列名1><連接運算符>[<表2>].<列名2>常見的連接運算符包括:比較運算符:=、>、<、>=、<=、!=、BETWEEN和AND。邏輯運算符:NOT、AND、OR。使用BETWEEN和AND的連接查詢形式為:

[<表1>].<列名1><BETWEEN>[<表2>].<列名2>AND[<表2>].<列名3>聯結查詢第9頁,課件共34頁,創(chuàng)作于2023年2月2.連接查詢的分類

1)按照是否使用“=”連接運算符分類等值連接:使用“=”。非等值連接:不使用“=”。

2)按照結果集分類:內連接和外連接3.笛卡爾積連接笛卡爾積是不帶連接謂詞的連接,只是兩個表記錄的交叉乘積,其結果會產生一些無意義的組合值。其語法如下:

SELECTselect_listFROMtable1,table2聯結查詢第10頁,課件共34頁,創(chuàng)作于2023年2月一、表的基本聯結—兩個表【例】查詢每個教師的姓名、所在系、所教課程名及該課程的考試時間。SELECTTNAME,DNAME,CNAME,CTESTFROMTEACHER,COURSE1WHERETEACHER.CNO=COURSE1.CNO第11頁,課件共34頁,創(chuàng)作于2023年2月一、表的基本聯結—多個表(復合連接)【例】查詢每個學生的姓名、所在系、所選修課程名稱、該課程的考試時間、考試成績和授課教師姓名。SELECTSNAME,STUDENT1.DNAME,CNAME,CTEST,MARK,TNAMEFROMTEACHER,COURSE1,STUDENT1WHERESTUDENT1.CNO=COURSE1.CNOANDTEACHER.CNO=STUDENT1.CNO第12頁,課件共34頁,創(chuàng)作于2023年2月一、表的基本聯結—使用表別名【例】查詢每個學生的姓名、所在系、所選修課程名稱、該課程的考試時間、考試成績和授課教師姓名。SELECTSNAME,S.DNAME,CNAME,CTEST,MARK,TNAMEFROMTEACHERAST

,COURSE1ASC,STUDENT1SWHERES.CNO=C.CNOANDT.CNO=S.CNO注:使用別名后,在語句中就不能再使用表的原名。第13頁,課件共34頁,創(chuàng)作于2023年2月二、采用JOIN關鍵字建立聯結在FROM子句中實現表的聯結,有助于將聯結條件與WHERE的搜索條件區(qū)分開,WHERE子句包含的搜索條件,用于進一步篩選根據聯結條件選擇的行。第14頁,課件共34頁,創(chuàng)作于2023年2月JOIN聯結的語法格式SELECT……FROMfirst_tablejoin_typesecond_table

ON[(]join_condition[)]WHERE……..【例】FROMSTUDENTJOINS_C

ON(STUDENT.SNO=S_C.SNO)注:1.Join_type:聯結的類型。2.ON子句:指出聯結條件。第15頁,課件共34頁,創(chuàng)作于2023年2月聯接查詢分類內部聯接(INNERJOIN):外部聯接(OUTERJOIN):

左向外部聯接(LEFTOUTERJOIN)

右向外部聯接(RIGHTOUTERJOIN)

完整外部聯接(FULLOUTERJOIN)交叉聯接(CROSSJOIN):也稱作笛卡兒積。第16頁,課件共34頁,創(chuàng)作于2023年2月內部聯接(INNERJOIN)典型的聯接運算,也可以叫做等同聯接,使用類似于“=”或“<>”的比較運算符根據每個表的通用列中的值匹配兩個表中的行。返回結果集是兩個表中所有相匹配的數據,而舍棄不匹配的數據。第17頁,課件共34頁,創(chuàng)作于2023年2月內部聯接(INNERJOIN)XYX

INNERJOIN

Y

ON

X.C=Y.C第18頁,課件共34頁,創(chuàng)作于2023年2月內部聯結

【例】從STUDENT1表和TEACHER表中查詢學生姓名、所在系、所修的所有課程的課程號及開課教師姓名。SELECTSNAME,S.DNAME,S.CNO,TNAMEFROMSTUDENT1ASS

INNERJOIN

TEACHERASTONS.CNO=T.CNO第19頁,課件共34頁,創(chuàng)作于2023年2月練習查詢學生修的非本系教師開設的課程信息,包括學生的學號、姓名、所在系、課程號、成績、以及開課教師的姓名。SELECTS.SNO,SNAME,S.DNAME,S.CNO,MARK,TNAMEFROMSTUDENT1ASS

INNERJOIN

TEACHERAST

ONS.CNO=T.CNO

ANDS.DNAME<>T.DNAME第20頁,課件共34頁,創(chuàng)作于2023年2月外部聯接XY左外部聯結(LEFTOUTERJOIN)的結果集包括左表的所有行,而不僅僅是匹配行。表示為:左外連接=內連接+左邊表中失配的元組XLEFTOUTERJOINYONX.C=Y.C第21頁,課件共34頁,創(chuàng)作于2023年2月外部聯接右外部聯結(RIGHTOUTERJOIN)的結果集包括右表的所有行,而不僅僅是匹配行。表示為:右外連接=內連接+右邊表中失配的元組XRIGHTOUTERJOINYONX.C=Y.CXY第22頁,課件共34頁,創(chuàng)作于2023年2月外部聯接完整外部聯結(FULLOUTERJOIN)的結果集包括左表和右表的所有行,而不僅僅是匹配行。XFULLOUTERJOINYONX.C=Y.CXY第23頁,課件共34頁,創(chuàng)作于2023年2月查詢所有學生的學號、姓名、課程號、課程名稱、考試時間和成績。即使該學生所選的課程不包含在COURSE1表內。SELECTS.SNO,SNAME,S.CNO,CNAME,CTEST,S.MARKFROMSTUDENT1ASS

LEFTOUTER

JOIN

COURSE1ASC

ONS.CNO=C.CNO實例第24頁,課件共34頁,創(chuàng)作于2023年2月練習SELECTS.SNO,SNAME,S.CNO,TNAMEFROMSTUDENT1ASS

RIGHTOUTERJOIN

TEACHERAST

ONS.CNO=T.CNO

查詢學生的學號、姓名、課程號和授課教師。即使有些老師沒有授課課程。第25頁,課件共34頁,創(chuàng)作于2023年2月交叉聯結(CROSSJOIN)交叉聯接:也稱作笛卡兒積。左表中的每一行均與右表中的所有行組合。第26頁,課件共34頁,創(chuàng)作于2023年2月交叉聯結(CROSSJOIN)SELECTS.SNO,SNAME,S.CNO,CNAME,CTEST,MARKFROMSTUDENT1ASS

CROSSJOINCOURSE1ASC注意:使用CROSSJOIN所得到的只是兩個表的笛卡爾積,得不到想要的結果。我們可以使用WHERE關鍵字指定搜索條件,這樣就和內連接的作用相同了。WHERES.CNO=C.CNO第27頁,課件共34頁,創(chuàng)作于2023年2月自聯結自聯結是指表與其自身進行聯結?!纠坎樵兇嬖诓患案裾n程的學生的姓名、所在系、不及格的課程及成績信息。SELECTSNAME,DNAME,CNO,MARKFROMSTUDENT1WHEREMARK<60第28頁,課件共34頁,創(chuàng)作于2023年2月查詢存在不及格課程的學生的姓名、所在系、所有的課程號及成績信息。SELECTDISTINCTS1.SNAME,S1.DNAME,S1.CNO,S1.MARKFROMSTUDENT1ASS1

JOINSTUDENT1ASS2

ON

S1.SNO=S2.SNO

ANDS2.MARK<60

實例自聯接中必須為表創(chuàng)建兩個不同的別名,使之成為邏輯上的兩張表。第29頁,課件共34頁,創(chuàng)作于2023年2月分析—兩步SELECTdistinctSNOFROMSTUDENT1WHEREMARK<60SELECTSNAME,DNAME,CNO,MARKFROMSTUDENT1WHERESNOIN('9702','9703','9705')ORDERBYSNAME第30頁,課件共34頁,創(chuàng)作于2023年2月分析—一步SELECTDISTINCTS1.SNAME,S1.CNO,S1.MARK…FROMSTUDENT1ASS1JOINSTUDENT1ASS2ONS1.SNO=S2.SNOANDS2.MARK<60不加distinct的結果:第31頁,課件共34頁,創(chuàng)作于2023年2月練習在course表中,查詢課程學分相同,但名字不同的課程的編號(CNO)、名稱(CNAME)和學分(CREDIT)。USEteachingSELECTDISTINCTC.CNO,C.CNAME,C.CREDITFROMCOURSEASCJOINCOURSEASCCONC.CREDIT=CC.CREDITANDC.CNAME<>CC.CNAME第32頁,課件共34頁,創(chuàng)作于2023年2月使用UNION子句使用UNION子句的查詢稱為聯合查詢,它可以將兩個或更多查詢的結果集組合為一個結果集。

使用UNION組合兩個查詢的結果集的兩個基本規(guī)則是:(1)所有查詢中的列數和列的

溫馨提示

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

評論

0/150

提交評論