用關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL實現(xiàn)數(shù)據(jù)查詢(多表查詢)的應(yīng)用研究_第1頁
用關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL實現(xiàn)數(shù)據(jù)查詢(多表查詢)的應(yīng)用研究_第2頁
用關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL實現(xiàn)數(shù)據(jù)查詢(多表查詢)的應(yīng)用研究_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、用關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL實現(xiàn)數(shù)據(jù)查詢多表查詢的應(yīng)用研究用關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL實現(xiàn)數(shù)據(jù)查詢多表查詢的應(yīng)用研究關(guān)系數(shù)據(jù)庫是基于關(guān)系模型作為數(shù)據(jù)的組織方式的,它借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。現(xiàn)實世界中的各種實體以及實體之間的各種聯(lián)絡(luò)均用關(guān)系模型來表示。它是由埃德加科德于1970年首先提出的,并配合科德十二定律?,F(xiàn)如今雖然對此模型有一些批評意見,但它還是數(shù)據(jù)存儲的傳統(tǒng)標(biāo)準(zhǔn)。標(biāo)準(zhǔn)數(shù)據(jù)查詢語言SQL就是一種基于關(guān)系數(shù)據(jù)庫的語言,這種語言執(zhí)行對關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的檢索和操作。1數(shù)據(jù)查詢所謂數(shù)據(jù)查詢數(shù)據(jù)檢索就是從關(guān)系數(shù)據(jù)庫的數(shù)據(jù)表中找出用戶所需的數(shù)據(jù),只要表關(guān)系中存在,那么可以通過各

2、種各樣的方式將它找出來,SQL的查詢功能就是實現(xiàn)這一功能的。本文主要研究討論多表查詢。在實際應(yīng)用中,由于一個關(guān)系數(shù)據(jù)庫根據(jù)需求分析后得到很多表,而且表與表之間互相存在一對一,一對多或是多對多的表間關(guān)系,這些表中的數(shù)據(jù)往往互相有較為嚴(yán)密的復(fù)雜聯(lián)絡(luò),在這種情況下,要查找用戶所需的數(shù)據(jù)時就得用多表查詢才能實現(xiàn)用戶的查詢目的和要求,比方在倉庫數(shù)據(jù)庫中分別有四張表,倉庫表,職工表,訂單表和供給商表,這四個表兩兩存在一對多的表間關(guān)系,一個倉庫可以有多名職工,一名職工只能屬于一個倉庫;一名職工可以經(jīng)手多筆訂單,一筆訂單只能由一名職工經(jīng)手;一家供給商可以完成多表訂單,一筆訂單只能由一家供給商完成,在實際應(yīng)用中

3、,假如要根據(jù)倉庫表中的數(shù)據(jù)作為條件查詢檢索供給商表中的數(shù)據(jù)時,必須得用基于多表的連接查詢才能完成。1.1簡單連接查詢。簡單連接查詢的SQL語句格式可總結(jié)如下。Selet查找數(shù)據(jù)所在的字段名,字段間用逗號隔開,假如是一個表的所有字段,那么用*號表示,但必須通過表名.*的方式做限定是哪個表的所有字段,假如不做限定,直接一個*,那么表示要查找的是fr后面跟的所有表的所有字段fr至少兩張或兩張以上的表名,這些表之間往往存在著一對一或是一對多,或是多對多的表間關(guān)系的注:連接條件是兩個表的主外鍵相等,主表表名.主鍵=子表表名.外鍵如:倉庫表.倉庫號=職工表.倉庫號。假如fr后面跟兩張表,那么是兩個表的簡單

4、連接查詢,有一個連接條件,假如fr后面跟三張表,那么有兩個連接條件,假如fr后面跟四張表,那么有三個連接條件,依此類推。而且查找數(shù)據(jù)的條件和連接條件必須用and連接,連接條件之間也用and連接。例如:在倉庫管理數(shù)據(jù)庫的四張表中檢索出回民所在倉庫的倉庫信息。對應(yīng)的SQL語句為:selet倉庫表.*fr倉庫表,職工表here民族=回and倉庫表.倉庫號=職工表.倉庫號。從這個簡單連接查詢實例來看。在基于多表的簡單連接查詢中,第一先確定最終要查詢的數(shù)據(jù)所在的字段來自于幾張表的幾個字段,查找數(shù)據(jù)的條件涉及到幾個表的幾個字段,其次根據(jù)表間關(guān)系確定查詢涉及到幾張表,然后確定連接條件。且here是必選項。1

5、.2嵌套查詢。嵌套查詢的意思是,一個查詢語句selet-fr-here塊可以嵌套在另外一個查詢塊的here子句中,稱為嵌套查詢。其中外層查詢也稱為父查詢或主查詢。內(nèi)層查詢也稱子查詢或從查詢。嵌套查詢的工作方式是:先處理內(nèi)查詢,由內(nèi)向外處理,外層查詢需要內(nèi)層查詢的結(jié)果來支持,但內(nèi)層查詢不需要外層查詢的支持。例如:Selet城市fr倉庫表here倉庫號insele本文由論文聯(lián)盟搜集整理t倉庫號fr職工表here工資=4532。在這類嵌套查詢中,帶有IN或NTIN謂詞的嵌套查詢在實際應(yīng)用中用的最多,這里的IN相當(dāng)于集合運算符。本文在闡述嵌套查詢中就以帶有IN或NTIN謂詞的嵌套查詢進(jìn)展闡述,帶有比擬

6、運算符的子查詢、帶有ANY或ALL謂詞的子查詢、帶有EXISTS謂詞的子查詢就再不做詳細(xì)闡述了。1.3超連接查詢。超連接查詢分為內(nèi)連接和外連接,外連接又分為左外連接,右外連接和全外連接。假如表中不匹配的數(shù)據(jù)不需要出如今查詢結(jié)果中,那么用內(nèi)連接。假如在查詢結(jié)果中兩個表中不匹配的數(shù)據(jù)都要出如今查詢結(jié)果中的話,那么用全外連接,其對應(yīng)表中對應(yīng)字段用NULL表示。其SQL語句格式為以基于兩張表的超連接為主:Selet跟簡單連接查詢的要求一樣fr主表表名n連接條件here查找數(shù)據(jù)的條件。例如以全外連接為例:selet倉庫.倉庫號,城市,面積,職工號,工資fr倉庫表fulljin職工表n倉庫表.倉庫號=職工

7、表.倉庫號JIN連接格式在連接多個表時的書寫方法要特別注意,在這種格式中JIN的順序和N的順序正好是相反的。2三種多表查詢的特點及規(guī)律在以上研究的三種多表查詢中,基于多表的簡單連接查詢中,要查詢的數(shù)據(jù)所在的字段可以是來自于一張表的字段,也可以是來自于多張表的字段,而查找數(shù)據(jù)的條件可以來自于一張表的字段,也可以來自于多張表的字段,即使沒有查找數(shù)據(jù)的條件,但連接條件必須得有,在其SQL語句格式中,here是必選項。在嵌套查詢中,通過實際應(yīng)用可以得出,嵌套查詢不管由幾個查詢語句塊組成,它們都是基于單表的簡單查詢構(gòu)成的,而且最內(nèi)層的查詢結(jié)果就是其外層查詢的條件,沒有內(nèi)層查詢的結(jié)果,就不可能得到外層查詢的結(jié)果,執(zhí)行順序都是由內(nèi)往外執(zhí)行的。在超連接查詢中,這種查詢往往是在有關(guān)系的表中出現(xiàn)了所謂的不匹配數(shù)據(jù)時,根據(jù)用戶的不同需要而使用的查詢,到底選用哪一種主要取決于查詢結(jié)果中要不要出現(xiàn)不匹配的數(shù)據(jù)和出現(xiàn)哪個表中的不匹配數(shù)據(jù)而定。假如要查找的數(shù)據(jù)來自于多張表的多個字段,那么可用連接查詢和內(nèi)連接查詢,查詢結(jié)果一樣。假如要查找的數(shù)據(jù)來自于一張表的字段,而條件發(fā)生

溫馨提示

  • 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

提交評論