Music Tutorial/zh

From SQLZoo

音樂數據庫The Music database

此教程使用簡介表格連接的使用。音樂數據庫有兩個表格:album 大碟 和 track曲目。

album(asin, title, artist, price, release, label, rank) 
大碟(asin, 碟名, 歌手, 售價, 推出, 標籤, 排名)


track(album, dsk, posn, song)
曲目(大碟, 碟號, 軌號, 歌名)

更多有關音樂數據庫的資訊(英文)

如何進行表格合拼

語句code>FROM album JOIN track ON album.asin=track.album 代表合拼表格 albumtrack。 這個合拼 JOIN 得出的每一個紀錄是一首歌。除了歌曲的欄位外(album, disk, posnsong),結果還包括每首歌對應的大碟資料album (title, artist ...)。

找出 收錄 歌曲song 'Alison' 碟名title 和 歌手 artist。.

SELECT*
FROMalbumJOINtrack
ON(album.asin=track.album)
WHEREsong='Alison'
SELECTtitle,artist
FROMalbumJOINtrack
ON(album.asin=track.album)
WHEREsong='Alison'

哪一歌手artist 錄了歌曲 song 'Exodus'?

SELECTartist
FROMalbumJOINtrackON(asin=album)
WHEREsong='Exodus'

為大碟album 'Blur', 顯示每一首歌的歌名 song

SELECTsong
FROMalbumJOINtrackON(asin=album)
WHEREtitle='Blur'

我們可以在合拼表格時,使用群組函數和GROUP BY

為每一大碟album顯示歌名title和每大碟的歌曲。 track數量。

SELECTtitleFROMalbumJOINtrackON(asin=album)
GROUPBYtitle
SELECTtitle,COUNT(*)
FROMalbumJOINtrackON(asin=album)
GROUPBYtitle

為每一大碟album列出碟名title 歌名中有'Heart'一詞的歌曲數量。 (沒有這些歌的大碟不用列出).

使用 song LIKE '%Heart%' 來找尋有Heart一詞的歌名。

SELECTtitle,COUNT(*)
FROMalbumJOINtrackON(asin=album)
WHEREsongLIKE'%Heart%'
GROUPBYtitle

主題歌曲是歌名 song 和大碟名字 title相同。找出主題歌曲。

SELECTsong
FROMalbumJOINtrackON(asin=album)
WHEREsong=title

同名大碟是指大碟和歌手名字相同。 (例如大碟'Blur' 是由樂隊 'Blur'主唱)。 找出同名大碟。

你只需使用一個表格,不用使用 JOIN

SELECTtitle
FROMalbum
WHEREartist=title

找出歌曲收錄在2隻以上的大碟中。列出收錄次數。

HAVING語句可以在GROUP BY之後使用。

SELECTsong,COUNT(DISTINCTasin)
FROMalbumJOINtrackONasin=album
GROUPBYsong
HAVINGCOUNT(DISTINCTasin)>2

好價大碟是指大碟中每一首歌曲的價格是少於5角。 找出好價大碟,列出大碟名字,售價和歌曲數量。

SELECTtitle,price,COUNT(song)
FROMalbumJOINtrackONasin=album
GROUPBYtitle,price
HAVINGprice/COUNT(song)<0.50

歌手Wagner的大碟 Ring cycle 有173首歌曲, 歌手Bing Crosby有一大碟 收錄了 101首歌曲。

按歌曲量(多至少)列出每一大碟的碟名和歌曲數量。
SELECTtitle,COUNT(asin)
FROMalbumJOINtrackONasin=album
GROUPBYasin,title
ORDERBY2DESC

電影數據庫 教程

Kaleidoscope - get a kaleidoscope view using your phone/laptop camera
  • Served by: noddy at 2026年07月05日T08:54