第3章(2)DB.ppt_第1頁
第3章(2)DB.ppt_第2頁
第3章(2)DB.ppt_第3頁
第3章(2)DB.ppt_第4頁
第3章(2)DB.ppt_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫系統(tǒng)簡介,數(shù)據(jù)庫系統(tǒng)簡介,第3章,關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL(續(xù)1),數(shù)據(jù)庫系統(tǒng)簡介,3.3查詢,3.3.1概述3.3.2單表查詢3.3.3連接查詢3.3.4嵌套查詢3.3.5集合查詢3.3.6匯總,數(shù)據(jù)庫系統(tǒng)簡介,3.3.3連接查詢,同時涉及多個表的查詢稱為連接查詢。用于連接兩個表的條件稱為連接條件或連接謂詞。通用格式:比較運算符:=,=,介于。還有。數(shù)據(jù)庫系統(tǒng)簡介,連接查詢(續(xù)),連接字段的連接謂詞中的列名是連接字段。連接條件中的連接字段類型必須是可比較的,但不一定相同。數(shù)據(jù)庫系統(tǒng)簡介,連接操作的執(zhí)行過程,嵌套循環(huán)方法首先在表1中找到第一個元組,然后從頭開始掃描表2,并逐個找到滿足連接

2、符的元組。找到后,表1中的第一個元組與該元組拼接,在結(jié)果表中形成一個元組。在搜索完所有表2之后,在表1中找到第二個元組,然后從頭開始掃描表2,逐個找到滿足連接條件的元組,然后將表1中的第二個元組與該元組拼接,在結(jié)果表中形成一個元組。重復(fù)上述操作,直到處理完表1中的所有元組。數(shù)據(jù)庫系統(tǒng)簡介(SORT-MERGE)通常用于=通過根據(jù)連接屬性對表1和表2進行排序來連接表1中的第一個元組,從頭開始掃描表2,依次搜索滿足連接條件的元組,并將表1中的第一個元組與該元組拼接以在結(jié)果表中形成一個元組。當(dāng)表2中的第一個元組大于表1中的連接字段值時,對表2的查詢將不會繼續(xù)。數(shù)據(jù)庫系統(tǒng)簡介在表1中找到第二個元組,然

3、后繼續(xù)從剛才的中斷點開始按順序掃描表2,以找到滿足連接條件的元組。找到它后,表1中的第一個元組將與這個元組拼接,在結(jié)果表中形成一個元組。當(dāng)表2中的元組直接大于表1中的連接字段值時,表2中的查詢將不會重復(fù)上述操作,直到表1或表2中的所有元組都被處理。數(shù)據(jù)庫系統(tǒng)簡介,INDEX-JOIN,根據(jù)連接字段對表2進行索引,根據(jù)表2的連接字段值依次查詢表2的索引,找到滿足條件的元組,并在結(jié)果表中找到元組后將表1中的第一個元組與元組進行拼接,形成元組,數(shù)據(jù)庫系統(tǒng)簡介,連接查詢(續(xù)),SQL中連接查詢的主要類型有廣義笛卡兒積等連接(包括自然連接),非等連接查詢,自連接查詢,外部連接查詢,復(fù)合條件連接查詢,數(shù)據(jù)

4、庫系統(tǒng)簡介,1。廣義笛卡兒積,很少使用沒有連接謂詞的連接:選擇學(xué)生。*,Sc。*來自sc學(xué)生,數(shù)據(jù)庫系統(tǒng)介紹,2。等價和非等價連接查詢,等價連接,自然連接,非等價連接情況32。選擇學(xué)生。*,SC。*來自學(xué)生,在冊種姓學(xué)生。斯諾=供應(yīng)鏈。斯諾。數(shù)據(jù)庫系統(tǒng)簡介,等連接,連接運算符=的連接操作。=。當(dāng)在任何子句中引用表1和表2中具有相同名稱的屬性時,表名必須有前綴。在引用唯一屬性名時,可以添加或省略表名前綴。數(shù)據(jù)庫系統(tǒng)簡介,等價連接,假設(shè)學(xué)生表和供應(yīng)鏈表分別具有以下數(shù)據(jù):學(xué)生表,數(shù)據(jù)庫系統(tǒng)簡介,等價連接,供應(yīng)鏈表,數(shù)據(jù)庫系統(tǒng)簡介,等價連接,結(jié)果表學(xué)生。snosname ssex sage sdept

5、 sc。snocno等級95001李勇男20 CS95001 1 92 95001李勇男20CS95001 2 85 95001李勇男20CS95001 3 88 95002劉晨女19IS 9 5002 2 90 95002劉晨女19is95002 380,數(shù)據(jù)庫系統(tǒng)介紹,自然連接,對等連接中的特殊情況,刪除目標(biāo)列中的重復(fù)屬性列。實施例33通過與實施例32的自然連接而完成。選擇學(xué)生。Sno,Sname,Ssex,Sage,Sdept,Cno,來自學(xué)生的等級,SC WHERE學(xué)生。斯諾=供應(yīng)鏈。斯諾。數(shù)據(jù)庫系統(tǒng)簡介,非等聯(lián)接查詢,聯(lián)接運算符不是=.比較運算符:=,介于。還有。介紹數(shù)據(jù)庫系統(tǒng),第三

6、,自連接,一個表連接自己,自連接稱為表需要別名,以顯示區(qū)別。由于所有屬性名稱都是同名的屬性,因此您必須使用別名前綴“數(shù)據(jù)庫系統(tǒng)簡介,自連接”(續(xù))。示例34查詢每門課程的間接預(yù)備課程(即預(yù)備課程的預(yù)備課程),首先選擇。Cno,SECRET。課程第一,課程第二,哪里第一。Cpno=秒。Cno,數(shù)據(jù)庫系統(tǒng)簡介,自連接(續(xù)),第一個表(課程表),數(shù)據(jù)庫系統(tǒng)簡介,自連接(續(xù)),第二個表(課程表),數(shù)據(jù)庫系統(tǒng)簡介,自連接(續(xù)),查詢結(jié)果1 7 3 5 5 6,數(shù)據(jù)庫系統(tǒng)簡介,4。外連接,外連接和普通連接的區(qū)別。普通連接只輸出滿足連接條件的元組。外部聯(lián)接將指定的表作為聯(lián)接主體,并一起輸出不滿足主體表中聯(lián)接

7、條件的元組。數(shù)據(jù)庫系統(tǒng)介紹,外部連接(續(xù)),示例33:詢問每個學(xué)生及其選修課,包括沒有選修課的學(xué)生-選擇學(xué)生。Sno,Sname,Ssex,Sage,Sdept,Cno,年級FROM Student,sc其中Student . SnO=sc . SnO(*);數(shù)據(jù)庫系統(tǒng)導(dǎo)論,外部連接(續(xù)),結(jié)果:學(xué)生。SnO SNAMESEX SAGE SDEPT CNO GRADE 95001李勇男20 CS 1 92 95001李勇男20 CS 2 85 95001李勇男20 CS 3 88 95002劉晨女19 IS 2 90 95002劉晨女19 I S 3 80 95003王敏妮娃18 MA 950

8、04張莉南19 IS,數(shù)據(jù)庫系統(tǒng)介紹,外部連接(續(xù)),在表名后添加外部連接運算符(*)或()該行全部由空值組成。虛擬行可以與主表中不滿足連接條件的所有元組連接。因為虛擬行的所有列都是空值,所以非主表的屬性值在連接結(jié)果中都是空值。數(shù)據(jù)庫系統(tǒng)簡介,外部連接(續(xù)),左側(cè)外部連接外部連接器出現(xiàn)在連接條件的左側(cè)。右側(cè)連接外部連接器出現(xiàn)在連接條件的右側(cè)。數(shù)據(jù)庫系統(tǒng)導(dǎo)論。五、復(fù)合條件連接。當(dāng)WHERE子句中有多個連接條件時,它被稱為復(fù)合條件連接示例35,該示例查詢學(xué)生編號、姓名,并選擇“學(xué)生、學(xué)生、來自學(xué)生的名稱、sc,其中學(xué)生、學(xué)生和/或*連接謂詞*/SC”。Cno=2 AND /*其他資格*/sc .評

9、分90分以上的學(xué)生;/*其他資格*/,數(shù)據(jù)庫系統(tǒng)介紹,多表連接,示例36:查詢每個學(xué)生的學(xué)號、姓名、選修課名稱和成績。選擇學(xué)生。Sno,Sname,Cname,學(xué)生成績,SC,學(xué)生所在的課程。斯諾=供應(yīng)鏈。斯諾和SC。Cno=課程。Cno結(jié)果:學(xué)生。學(xué)生姓名年級95001李勇數(shù)據(jù)庫92 95001李勇數(shù)學(xué)85 95001李勇信息系統(tǒng)88 95002劉晨數(shù)學(xué)90 95002劉晨信息系統(tǒng)80,數(shù)據(jù)庫系統(tǒng)介紹,3.3查詢,3.3.1概述3.3.2單表查詢3.3.3連接查詢3.3.4嵌套查詢3.3.5集合查詢3.3.6匯總,數(shù)據(jù)庫系統(tǒng)介紹,3.3.4嵌套查詢一個查詢塊嵌套在另一個查詢塊的WHERE子句

10、或HAVING短語的條件中的查詢稱為嵌套查詢。數(shù)據(jù)庫系統(tǒng)簡介,嵌套查詢(續(xù)),選擇Sname外部查詢/來自學(xué)生的父查詢,其中SnO為(選擇SnO內(nèi)部查詢/來自SC的子查詢,其中Cno=2);數(shù)據(jù)庫系統(tǒng)導(dǎo)論,嵌套查詢(續(xù)),子查詢不能使用ORDER BY子句的限制,這反映了SQL語言的結(jié)構(gòu)。一些嵌套查詢可以用連接操作、數(shù)據(jù)庫系統(tǒng)簡介、嵌套查詢分類來代替,不相關(guān)子查詢的查詢條件不依賴于父查詢。相關(guān)子查詢的查詢條件依賴于父查詢、數(shù)據(jù)庫系統(tǒng)簡介、嵌套查詢求解方法,不相關(guān)子查詢由內(nèi)向外逐層處理。也就是說,每個子查詢在前一級查詢處理之前被求解,并且子查詢的結(jié)果被用來建立其父查詢的搜索條件。數(shù)據(jù)庫系統(tǒng)簡介,

11、嵌套查詢求解方法(續(xù)),相關(guān)子查詢首先獲取外部查詢中表的第一個元組,根據(jù)其與內(nèi)部查詢相關(guān)的屬性值處理內(nèi)部查詢,如果WHERE子句的返回值為真,則獲取該元組并將其放入結(jié)果表中;然后取外表的下一個元組;重復(fù)此過程,直到檢查完所有外部表格。數(shù)據(jù)庫系統(tǒng)導(dǎo)論,引出子查詢的謂詞,帶IN謂詞的子查詢,帶比較運算符的子查詢,帶ANY或ALL謂詞的子查詢,帶EXISTS謂詞的子查詢,數(shù)據(jù)庫系統(tǒng)導(dǎo)論,帶IN謂詞的子查詢,例37,查詢與劉晨在同一系學(xué)習(xí)的學(xué)生。該查詢要求逐步確定“劉晨”的系名:從學(xué)生中選擇“學(xué)生”,其中sname=劉晨;結(jié)果是IS: sdeptis,數(shù)據(jù)庫系統(tǒng)導(dǎo)論,帶in謂詞的子查詢(續(xù)),尋找所有在IS系學(xué)習(xí)的學(xué)生。從學(xué)生處選擇斯諾、斯奈姆、斯代普,斯代普=是;結(jié)果是:Sno Sname Sdept 95001劉晨IS 95004張lis,數(shù)據(jù)庫系統(tǒng)介紹,構(gòu)造嵌套查詢,將第一個查詢嵌入到第二個查詢的條件中,SELECT Sno Sname Sdetp from student where Sdept in(SELECT Sdept from student

溫馨提示

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

最新文檔

評論

0/150

提交評論