資源描述:
《用關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言sql實(shí)現(xiàn)數(shù)據(jù)查詢(xún)(多表查詢(xún))的應(yīng)用研究》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、用關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL實(shí)現(xiàn)數(shù)據(jù)查詢(xún)(多表查詢(xún))的應(yīng)用研究用關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL實(shí)現(xiàn)數(shù)據(jù)查詢(xún)(多表查詢(xún))的應(yīng)用研究關(guān)系數(shù)據(jù)庫(kù)是基于關(guān)系模型作為數(shù)據(jù)的組織方式的,它借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)?,F(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來(lái)表示。它是由埃德加科德于1970年首先提出的,并配合科德十二定律?,F(xiàn)如今雖然對(duì)此模型有一些批評(píng)意見(jiàn),但它還是數(shù)據(jù)存儲(chǔ)的傳統(tǒng)標(biāo)準(zhǔn)。標(biāo)準(zhǔn)數(shù)據(jù)查詢(xún)語(yǔ)言SQL就是一種基于關(guān)系數(shù)據(jù)庫(kù)的語(yǔ)言,這種語(yǔ)言執(zhí)行對(duì)關(guān)系數(shù)據(jù)庫(kù)中數(shù)據(jù)的檢索和操作?! ?數(shù)據(jù)查詢(xún) 所謂數(shù)據(jù)查詢(xún)(數(shù)據(jù)檢索)就是從關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)表中找出用戶(hù)
2、所需的數(shù)據(jù),只要表(關(guān)系)中存在,則可以通過(guò)各種各樣的方式將它找出來(lái),SQL的查詢(xún)功能就是實(shí)現(xiàn)這一功能的。本文主要研究討論多表查詢(xún)。 在實(shí)際應(yīng)用中,由于一個(gè)關(guān)系數(shù)據(jù)庫(kù)根據(jù)需求分析后得到很多表,而且表與表之間互相存在一對(duì)一,一對(duì)多或是多對(duì)多的表間關(guān)系,這些表中的數(shù)據(jù)往往互相有較為緊密的復(fù)雜聯(lián)系,在這種情況下,要查找用戶(hù)所需的數(shù)據(jù)時(shí)就得用多表查詢(xún)才能實(shí)現(xiàn)用戶(hù)的查詢(xún)目的和要求,比如在倉(cāng)庫(kù)數(shù)據(jù)庫(kù)中分別有四張表,倉(cāng)庫(kù)表,職工表,訂單表和供應(yīng)商表,這四個(gè)表兩兩存在一對(duì)多的表間關(guān)系,一個(gè)倉(cāng)庫(kù)可以有多名職工,一名職工只能屬于一個(gè)倉(cāng)庫(kù);一名職工可以經(jīng)手多筆訂單,一筆訂單只能由一名職工經(jīng)
3、手;一家供應(yīng)商可以完成多表訂單,一筆訂單只能由一家供應(yīng)商完成,在實(shí)際應(yīng)用中,如果要根據(jù)倉(cāng)庫(kù)表中的數(shù)據(jù)作為條件查詢(xún)檢索供應(yīng)商表中的數(shù)據(jù)時(shí),必須得用基于多表的連接查詢(xún)才能完成?! ?.1簡(jiǎn)單連接查詢(xún)。簡(jiǎn)單連接查詢(xún)的SQL語(yǔ)句格式可總結(jié)如下。Select<查找數(shù)據(jù)所在的字段名,字段間用逗號(hào)隔開(kāi),如果是一個(gè)表的所有字段,則用*號(hào)表示,但必須通過(guò)表名.*的方式做限定是哪個(gè)表的所有字段,如果不做限定,直接一個(gè)*,則表示要查找的是from后面跟的所有表的所有字段>from<至少兩張或兩張以上的表名,這些表之間往往存在著一對(duì)一或是一對(duì)多,或是多對(duì)多的表間關(guān)系的>
4、>注:連接條件是兩個(gè)表的主外鍵相等,主表表名.主鍵=子表表名.外鍵如:倉(cāng)庫(kù)表.倉(cāng)庫(kù)號(hào)=職工表.倉(cāng)庫(kù)號(hào)?! ∪绻鹒rom后面跟兩張表,則是兩個(gè)表的簡(jiǎn)單連接查詢(xún),有一個(gè)連接條件,如果from后面跟三張表,則有兩個(gè)連接條件,如果from后面跟四張表,則有三個(gè)連接條件,依此類(lèi)推。而且查找數(shù)據(jù)的條件和連接條件必須用and連接,連接條件之間也用and連接?! ∈纠涸趥}(cāng)庫(kù)管理數(shù)據(jù)庫(kù)的四張表中檢索出回民所在倉(cāng)庫(kù)的倉(cāng)庫(kù)信息。對(duì)應(yīng)的SQL語(yǔ)句為:select倉(cāng)庫(kù)表.*from倉(cāng)庫(kù)表,職工表-倉(cāng)庫(kù)表職工表<主表表名>on<連接條件>[倉(cāng)庫(kù)表fulljoin職工
5、表on倉(cāng)庫(kù)表.倉(cāng)庫(kù)號(hào)=職工表.倉(cāng)庫(kù)號(hào)JOIN連接格式在連接多個(gè)表時(shí)的書(shū)寫(xiě)方法要特別注意,在這種格式中JOIN的順序和ON的順序正好是相反的?! ?三種多表查詢(xún)的特點(diǎn)及規(guī)律 在以上研究的三種多表查詢(xún)中,基于多表的簡(jiǎn)單連接查詢(xún)中,要查詢(xún)的數(shù)據(jù)所在的字段可以是來(lái)自于一張表的字段,也可以是來(lái)自于多張表的字段,而查找數(shù)據(jù)的條件可以來(lái)自于一張表的字段,也可以來(lái)自于多張表的字段,即使沒(méi)有查找數(shù)據(jù)的條件,但連接條件必須得有,在其SQL語(yǔ)句格式中,where是必選項(xiàng)。 在嵌套查詢(xún)中,通過(guò)實(shí)際應(yīng)用可以得出,嵌套查詢(xún)不管由幾個(gè)查詢(xún)語(yǔ)句塊組成,它們都是基于單表的簡(jiǎn)單查詢(xún)構(gòu)成的,而且最內(nèi)層的
6、查詢(xún)結(jié)果就是其外層查詢(xún)的條件,沒(méi)有內(nèi)層查詢(xún)的結(jié)果,就不可能得到外層查詢(xún)的結(jié)果,執(zhí)行順序都是由內(nèi)往外執(zhí)行的?! ≡诔B接查詢(xún)中,這種查詢(xún)往往是在有關(guān)系的表中出現(xiàn)了所謂的不匹配數(shù)據(jù)時(shí),根據(jù)用戶(hù)的不同需要而使用的查詢(xún),到底選用哪一種主要取決于查詢(xún)結(jié)果中要不要出現(xiàn)不匹配的數(shù)據(jù)和出現(xiàn)哪個(gè)表中的不匹配數(shù)據(jù)而定?! ∪绻檎业臄?shù)據(jù)來(lái)自于多張表的多個(gè)字段,則可用連接查詢(xún)和內(nèi)連接查詢(xún),查詢(xún)結(jié)果相同。如果要查找的數(shù)據(jù)來(lái)自于一張表的字段,而條件發(fā)生在不同的表中,則可用連接查詢(xún),嵌套查詢(xún)和內(nèi)連接查詢(xún),查詢(xún)結(jié)果相同?! ?結(jié)束語(yǔ) SQL的查詢(xún)功能,尤其是多表查詢(xún)有很大的靈活性,在實(shí)際應(yīng)用中要
7、視具體情況來(lái)決定用哪一類(lèi),這需要在實(shí)踐中摸索總結(jié),只有這樣才能對(duì)SQL語(yǔ)句的查詢(xún)功能運(yùn)用的得心應(yīng)手。