為了從兩個或多個表中選出數(shù)據(jù),我們一般使用表連接來實現(xiàn)這個功能。
本節(jié)介紹join(連接)的概念. 為此我們準(zhǔn)備了兩個試驗用表: album(專輯表) 和 track(曲目表). 專輯表:包含200首來自Amazon的音樂CD的概要信息。 album(asin, title, artist, price, release, label, rank)曲目表:每張專輯中的曲目(因為是音樂CD,所以也可叫歌曲)的詳細(xì)信息。 track(album, dsk, posn, song)SQL短語 FROM album JOIN track ON album.asin=track.album表示連接album和track表。 其中,album.asin表示專輯的惟一標(biāo)識號,track.album表示曲目表中和專輯關(guān)聯(lián)的專輯號。連接后,得到一個臨時表,該臨時表中每條記錄包含的字段由兩部分組成,除了專輯表中的對應(yīng)字段album(title, artist ...),還包含曲目表的所有字段track(album, disk, posn and song)。 有了這張臨時表,很多查詢就容易實現(xiàn)了。 看看一些具體的實例, 一、列出歌名為'Alison'的專輯名稱和作者 SELECT title, artist FROM album JOIN track ON (album.asin=track.album) WHERE song = 'Alison'顯然,歌名、專輯名稱和作者分別在兩個表中,必需使用表連接來完成這個查詢。 二、哪個artist錄制了歌曲'Exodus' SELECT artist FROM album JOIN track ON (asin=album) WHERE song = 'Exodus'用作連接的兩個字段asin,album因為在兩個表中都是惟一的,所以不一定要加表名作為前綴。但為了方便理解,建議使用前綴,形如:album.asin=track.album 三、列出曲目表中所有屬于'Blur'專輯的歌曲 SELECT song FROM album JOIN track ON (asin=album) WHERE title = 'Blur'如果我們把 album JOIN track ON (asin=album) 看成一個臨時表的話,join的概念就很好理解了。 |
|
來自: 知識藏園 > 《SQL sever》