賽迪網 > IT技術 數據庫 > SQL Server
  IT資訊搜索
 
IT產品搜索
[程式開發][網管世界][網路安全][數據庫技術]
[作業系統][嘉賓聊天·線上訪談][活動集錦]
[精彩專題][Symantec專區][訂閱IT技術週刊]
[開發論壇][網管論壇][安全論壇][數據庫論壇]
[作業系統論壇][Sybase專區][IBM dW技術專區]
[病毒求助][病毒與漏洞播報][文檔·源碼下載]

對跨多個表格的數據組合時需要用到的SQL (1)

發佈時間:2008.07.18 09:03     來源:賽迪網    作者:茶晶

【賽迪網-IT技術報道】在對跨多個表格的數據進行組合時,有時很難搞清楚要使用哪一個SQL句法。我將在這裡對將多個表格中的查詢合併至單一聲明中的常用方式進行闡述。

在這篇文章中的樣本查詢符合SQL92 ISO標準。不是所有的數據庫生產商都遵循這項標準,而且很多廠商採取的提升措施會帶來一些意料不到的後果。如果你不確定你的數據庫是不是支援這些標準,你可以參看生產廠商的有關資料。

SELECT

一個簡單的SELECT聲明就是查詢多個表格的最基本的方式。你可以在FROM子句中調用多個表格來組合來自多個表格的結果。這裡是一個它如何工作的實例:

SELECT table1.column1, table2.column2 FROM table1,

table2 WHERE table1.column1 = table2.column1;

這個實例中,我使用點號(table1.column1)來指定專欄來自哪一個表格。如果所涉及的專欄只在一個參考的表格中出現,你就不需要加入完整的名稱,但是加入完整名稱會對可讀性起到幫助。

在FROM子句中表格之間由逗號來分隔,你可以加入所需的任意多的表格,儘管一些數據庫有一個在引入正式的JOIN聲明之前他們可以有效地處理的內容這方面的限制,這個將在下面談到。

這個句法是一個簡單的INNER JOIN。一些數據庫將它看成與一個外部的JOIN是等同的。WHERE子句告知數據庫哪一個區域要做關聯,而且它返回結果時,就像列出的表格在給定的條件下組合成一個單獨的表格一樣。值得注意的是,你的比較條件並不需要與你作為結果組返回的專欄相同。在上面的例子中,table1.column1和table2.column1用來組合表格,但是返回的卻是table2.column2。

你可以在WHERE子句中使用AND關鍵字來將這個功能擴展至多於兩個的表格。你還可以使用這樣的表格組合來限制你的結果而不用實際地從每個表格返回專欄。在下面的例子中,table3與table1匹配,但是我沒有從table3返回任何東西來顯示。我只是確保來自table1的有關專欄存在於table3之中。注意此例中table3需要在FROM子句中被引用。

SELECT table1.column1, table2.column2 FROM table1,

table2, table3 WHERE table1.column1 =

table2.column1 AND table1.column1 = table3.column1;

然而,要注意的是,這個查詢多個表格的方式是一個暗指的JOIN。你的數據庫可能對事物進行不同的處理,這取決於它所使用的優化引擎。而且,忽略對與WHERE子句的相關特性的定義將會給你帶來不願看到的結果,例如從餘下的查詢中返回與每一個可能的結果相關的專欄的rogue域,就像在CROSS JOIN之中一樣。

如果你習慣於你的數據庫處理這種類型的聲明的方式,且你只對兩個或是少數幾個表格進行組合,一個簡單的SELECT聲明就可以達到目的。

JOIN

JOIN的工作方式與SELECT聲明是相同的,它從不同的表格中返回一個帶有專欄的結果組。在暗含的JOIN之上使用外部JOIN的優勢是對你的結果組的更好的控制,而且還可能在涉及很多個表格的情況下提升性能表現。

1 2 下一頁>>


[ 發表評論 ] 字體[  ] [ 列印 ] [ 進入博客 ] [ 進入論壇 ]  [ 推薦給朋友 ]
  相關文章
· SQL中獲得EXEC後面的sql語句或返回值的方法 (07-10) · 微軟計劃八月份正式發佈SQL Server 2008 (07-10)
· 用一條SQL實現:一行多個字段數據的最大值 (07-09) · 新型自動化SQL注入攻擊引發大規模網頁挂馬 (06-10)
· SQL注入攻擊成為新威脅將挑戰作業系統安全 (05-26) · 循序漸進講解SQL查詢語句的高級應用技巧 (05-05)
· 標準SQL規範中定義的四個事務隔離級別 (04-29) · 微軟:Web伺服器攻擊與IIS等軟體缺陷無關 (04-28)
· 利用SQL語句對不同數據庫進行高效果分頁 (04-27) · SQL指令植入式攻擊的危害及其防範措施 (04-24)
  客戶需求反饋表
* 姓  名:
更多資料  了解方案  認識廠商
* 單位名稱:
* 聯繫電話:
* 電子郵件:
  賽迪推薦  
  手機·資費 ·新品·導購·評測·手機資費·寬帶
手機搜索  諾基亞 N73 MOTO Z6
  IT產品 ·筆記本·臺式機·伺服器·列印·投影
IT產品搜索 
  IT技術 ·開發·網管·安全·數據庫·作業系統
  資訊化 ·熱點·專題·訪談·週刊·方案案例
· 駭客病毒現身互聯網 個人數據資訊受威脅
· ERP實施過程中項目管理失控的幾種表現
· 首屆贏在軟體創富大賽 SOA技術+應用
· 個人理財合規系統方案 方正電子公文系統
  IT博客 ·曾劍秋·項立剛·Java學習·網管
  IT技術論壇 ·開發·網管·安全·數據庫·系統