語句 任何熟悉SQL和關聯式資料庫的人都遇見過大量的連線類型。最簡單的說,串連(join)會把兩個表的內容組合到一個虛擬表或者recordset內。假如資料表有效地規一化,或許你會經常從某一個表中選出特定的資訊再從另一個表中選出關聯資訊。這樣做就需要簡單的“同等串連(equijoin)”。
為了瞭解實際的串連操作,現在讓我們假設在一個資料庫記憶體放了某類軟體的相關記錄。某個表(Software)包含了軟體產品的名稱、軟體的版本以及其他有關細節:[image004.gif]
另一個表(Releases)則儲存了軟體發布曆史的資訊,其中包括髮布日期和發布狀態等(比如測試版、最新分支、過時等):[image005.gif]
上表中還包含了一個列,內容指向軟體表中採用的ID號。所以,通過這種索引軟體表的方式,你就知道發行資料表中software_ID 等於 2的軟體是Rome。
你採用串連組合資訊,這樣就不需要在兩個表之間來回折騰了。不過,除了組合資訊之外還可以通過串連把有關資訊合并。這樣,只要發行資料表內的software_ID 匹配軟體表內的ID,你就把匹配資訊一起放到一個記錄內。
代碼如下:
SQL = "SELECT * FROM Software, Releases WHERE software.ID = releases.softwareID"
仔細分析以上的語句,首先注意到兩個表名列在了FROM的後面。再根據所採用的串連,今後你可能還會發現文法會有所變化(或者連線類型有變),但是以上的文法是最基本的,顯示了資料的聯合選擇方式。這裡的WHERE 子句用來比較特定的ID值。在Software 表內,存在ID 列。同樣的,Releases 表內則有個software_ID 列。為了明確你在WHERE 子句裡要比較的值,你用表名作為首碼,後面還加上了一個點號(.)。
以下是串連選取資料之後的結果:[image006.gif]
注意:在建立串連的時候要仔細考慮選出資料的列。以上代碼採用 * 萬用字元是為了讓讀者關注於SELECT 程式碼的其他部分。但是,正如你從上圖看到的那樣,你無法選出softwareID 列,因為這一列沒有作為recordset部分的增加值。它的作用就是為WHERE 子句所用。