大家好,我正在为音乐应用程序在数据库上工作,到目前为止,我已经掌握了这一点。
Song
SongId Name Artist
Playlist
PlaylistId Name
Playlist_with_songs
id (fk)PlaylistId (fk)SongId
最后一个表都是主键。
所以我想知道查询的样子。
例如如果我想获取所有具有playlistId 5的歌曲,那么我会
必须从Song表中获取实际的歌曲,我可以使用哪种语句。
此外,如果在删除播放列表的情况下仍保留所有歌曲可用,这是否是一种很好的格式?在那里可以级联工作吗?
谢谢
(我正在使用sqlite。)
最佳答案
SQL部分
老式的方式:
SELECT * FROM Song
WHERE SongId IN (
SELECT SongId FROM Playlist_with_songs
WHERE Playlist_id = 5)
现代方式:
SELECT s.* FROM Song s
JOIN Playlist_with_songs ps ON ps.SongId = s.SongId
AND ps.Playlist_id = 5
删除部分
正是这种模式用于n:m关系。您应该为两个FK定义
ON DELETE CASCADE
。