MySQL--內聯語句練習

 

DROP TABLE track;
DROP TABLE album;
CREATE TABLE album(
albumCode VARCHAR(10) NOT NULL PRIMARY KEY -- 專輯編號 
,title VARCHAR(50) -- 專輯標題
,artist VARCHAR(50) -- 做者
,price DECIMAL(10,2) -- 售價
,rdate DATETIME -- 發行日期
,label VARCHAR(50) -- 唱片公司
,rank INTEGER -- 專輯排名
)DEFAULT CHARSET=utf8;

CREATE TABLE track(
album VARCHAR(10) NOT NULL -- 專輯編號
,dsk INTEGER NOT NULL -- 碟片編號
,posn INTEGER NOT NULL -- 歌曲在碟片位置
,song VARCHAR(255) -- 歌曲名
,PRIMARY KEY(album,dsk,posn) 
,FOREIGN KEY (album) REFERENCES album(albumCode)
)DEFAULT CHARSET=utf8;

SELECT * FROM album;
SELECT * FROM track;

-- 找出包含song(歌曲)'Alison'的專輯title(名稱)和artist(做者)
SELECT a.title,a.artist FROM album a ,track t WHERE a.albumCode=t.album AND t.song='Alison'

-- 哪一個artist(做者)錄製了song(歌曲)'Exodus'
SELECT artist FROM album a,track t WHERE a.albumCode=t.album AND t.song='Exodus'

-- 列出track(曲目表)中全部屬於'Blur' album(專輯)的song(歌曲)
SELECT song FROM track t,album a WHERE title='Blur' AND a.albumCode=t.album

-- 顯示每張album(專輯)的title(名稱)和包含track曲目數
SELECT a.title,COUNT(song) FROM track t ,album a WHERE a.albumCode=t.album GROUP BY a.title

-- 顯示每張album(專輯)的title(名稱),以及曲目名稱中包含'Heart'的曲目總數 
SELECT a.title,COUNT(t.song) FROM album a LEFT JOIN track t ON a.albumCode=t.album WHERE t.song LIKE '%Heart' GROUP BY a.albumCode

-- 找出全部song(歌名)和title(專輯名)相同的曲目
SELECT t.song FROM track t,album a WHERE a.albumCode=t.album AND a.title=t.song

-- 找出全部專輯名(title)和artist(做者名)相同的專輯
SELECT a.title FROM track t,album a WHERE a.title=a.artist

-- 找出在兩張以上專輯中出現過的歌曲,同時包含出現的次數
SELECT t.song,COUNT(a,albumCode) c FROM track t JOIN album a ON a.albumCode=t.album GROUP BY t.song HAVING c>2

-- 找出每首歌曲的訂價低於0.5的專輯,顯示專輯標題、價格和曲目總數
SELECT a.title,a.price,COUNT(t.song)c FROM track t,album a WHERE a.albumCode=t.album
GROUP BY t.song HAVING a.price/c<0.5

-- 按專輯包含曲目多少從多到少依次列出專輯名稱(title)和包含曲目總數
SELECT title,COUNT(t.song)c FROM track t,album a WHERE a.albumCode=t.album GROUP BY a.albumCode
ORDER BY c DESC
相關文章
相關標籤/搜索