sql簡(jiǎn)單查詢和聯(lián)合查詢

sql簡(jiǎn)單查詢和聯(lián)合查詢

ID:14172612

大小:41.00 KB

頁(yè)數(shù):16頁(yè)

時(shí)間:2018-07-26

sql簡(jiǎn)單查詢和聯(lián)合查詢_第1頁(yè)
sql簡(jiǎn)單查詢和聯(lián)合查詢_第2頁(yè)
sql簡(jiǎn)單查詢和聯(lián)合查詢_第3頁(yè)
sql簡(jiǎn)單查詢和聯(lián)合查詢_第4頁(yè)
sql簡(jiǎn)單查詢和聯(lián)合查詢_第5頁(yè)
資源描述:

《sql簡(jiǎn)單查詢和聯(lián)合查詢》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、sql簡(jiǎn)單查詢和聯(lián)合查詢?cè)趯?duì)跨多個(gè)表格的數(shù)據(jù)進(jìn)行組合時(shí),有時(shí)很難搞清楚要使用哪一個(gè)SQL句法。我將在這里對(duì)將多個(gè)表格中的查詢合并至單一聲明中的常用方式進(jìn)行闡述。在這篇文章中的樣本查詢符合SQL92ISO標(biāo)準(zhǔn)。不是所有的數(shù)據(jù)庫(kù)生產(chǎn)商都遵循這項(xiàng)標(biāo)準(zhǔn),而且很多廠商采取的提升措施會(huì)帶來一些意料不到的后果。如果你不確定你的數(shù)據(jù)庫(kù)是不是支持這些標(biāo)準(zhǔn),你可以參看生產(chǎn)廠商的有關(guān)資料。SELECT一個(gè)簡(jiǎn)單的SELECT聲明就是查詢多個(gè)表格的最基本的方式。你可以在FROM子句中調(diào)用多個(gè)表格來組合來自多個(gè)表格的結(jié)果。這里是一個(gè)它如何工作的實(shí)例:SELECTtable1.column1,ta

2、ble2.column2FROMtable1,table2WHEREtable1.column1=table2.column1;這個(gè)實(shí)例中,我使用點(diǎn)號(hào)(table1.column1)來指定專欄來自哪一個(gè)表格。如果所涉及的專欄只在一個(gè)參考的表格中出現(xiàn),你就不需要加入完整的名稱,但是加入完整名稱會(huì)對(duì)可讀性起到幫助。在FROM子句中表格之間由逗號(hào)來分隔,你可以加入所需的任意多的表格,盡管一些數(shù)據(jù)庫(kù)有一個(gè)在引入正式的JOIN聲明之前他們可以有效地處理的內(nèi)容這方面的限制,這個(gè)將在下面談到。這個(gè)句法是一個(gè)簡(jiǎn)單的INNERJOIN。一些數(shù)據(jù)庫(kù)將它看成與一個(gè)外部的JOIN是等同的。W

3、HERE子句告知數(shù)據(jù)庫(kù)哪一個(gè)區(qū)域要做關(guān)聯(lián),而且它返回結(jié)果時(shí),就像列出的表格在給定的條件下組合成一個(gè)單獨(dú)的表格一樣。值得注意的是,你的比較條件并不需要與你作為結(jié)果組返回的專欄相同。在上面的例子中,table1.column1和table2.column1用來組合表格,但是返回的卻是table2.column2。你可以在WHERE子句中使用AND關(guān)鍵字來將這個(gè)功能擴(kuò)展至多于兩個(gè)的表格。你還可以使用這樣的表格組合來限制你的結(jié)果而不用實(shí)際地從每個(gè)表格返回專欄。在下面的例子中,table3與table1匹配,但是我沒有從table3返回任何東西來顯示。我只是確保來自table1

4、的有關(guān)專欄存在于table3之中。注意此例中table3需要在FROM子句中被引用。SELECTtable1.column1,table2.column2FROMtable1,table2,table3WHEREtable1.column1=table2.column1ANDtable1.column1=table3.column1;然而,要注意的是,這個(gè)查詢多個(gè)表格的方式是一個(gè)暗指的JOIN。你的數(shù)據(jù)庫(kù)可能對(duì)事物進(jìn)行不同的處理,這取決于它所使用的優(yōu)化引擎。而且,忽略對(duì)與WHERE子句的相關(guān)特性的定義將會(huì)給你帶來不愿看到的結(jié)果,例如從余下的查詢中返回與每一個(gè)可能的結(jié)果

5、相關(guān)的專欄的rogue域,就像在CROSSJOIN之中一樣。如果你習(xí)慣于你的數(shù)據(jù)庫(kù)處理這種類型的聲明的方式,且你只對(duì)兩個(gè)或是少數(shù)幾個(gè)表格進(jìn)行組合,一個(gè)簡(jiǎn)單的SELECT聲明就可以達(dá)到目的。JOINJOIN的工作方式與SELECT聲明是相同的,它從不同的表格中返回一個(gè)帶有專欄的結(jié)果組。在暗含的JOIN之上使用外部JOIN的優(yōu)勢(shì)是對(duì)你的結(jié)果組的更好的控制,而且還可能在涉及很多個(gè)表格的情況下提升性能表現(xiàn)。JOIN的類型有幾種:LEFT,RIGHT,F(xiàn)ULLOUTER,INNER和CROSS。你所使用的類型是由你想要看到的結(jié)果所決定的。例如,使用LEFTOUTERJOIN將會(huì)

6、從列出的第一個(gè)表格中返回所有有關(guān)的行,而同時(shí)如果沒有信息與第一個(gè)表格相關(guān)的話將潛在地從所列出的第二個(gè)表格中加入行。在這里INNERJOIN和暗含的JOIN是不同的,INNERJOIN將只返回那些在兩個(gè)表格中都有數(shù)據(jù)的行。對(duì)第一個(gè)SELECT查詢使用如下JOIN聲明:SELECTtable1.column1,table2.column2FROMtable1INNERJOINtable2ONtable1.column1=table2.column1;子查詢子查詢,或叫子選擇聲明,是在一個(gè)查詢中將結(jié)果組作為資源使用的一個(gè)途徑。他經(jīng)常被用來對(duì)結(jié)果進(jìn)行限制或定義,而不是運(yùn)行多個(gè)

7、查詢或操縱應(yīng)用軟件之中的數(shù)據(jù)。有了子查詢,你可以參考表格來決定數(shù)據(jù)的內(nèi)含,或是在一些情況下,返回一個(gè)專欄,而這個(gè)專欄是一個(gè)子選擇的結(jié)果。下面的例子中使用了兩個(gè)表格。一個(gè)表格中包含了我想要返回的數(shù)據(jù),而另一個(gè)表格則給出一個(gè)比較點(diǎn)來確定什么數(shù)據(jù)是我確實(shí)感興趣的。SELECTcolumn1FROMtable1WHEREEXISTS(SELECTcolumn1FROMtable2WHEREtable1.column1=table2.column1);子查詢很重要的一個(gè)方面就是性能表現(xiàn)。便利性是有代價(jià)的,它取決于你所使用的表格和聲明的大小,數(shù)量和復(fù)雜性,還有你

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。