我试图弄清楚在sqlite下创建没有外键的表的方法。我想避免使用外键,因为它在我现在正在使用的一些应用程序中不兼容。
有人可以用两张桌子来展示一个简单的例子吗?谢谢。
简单示例:如何从一位特定艺术家中选择所有曲目?
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER
);
答案 0 :(得分:1)
如果您没有指定外键,则没有外键。
SELECT t.trackname, t.trackid
FROM track t
INNER JOIN artist a
ON a.artistid = t.trackartist
WHERE a.artistname = 'Alex'
答案 1 :(得分:1)
您可以在表之间建立关系而不声明外键。你只需要
SELECT a.*, t.* FROM artist a INNER JOIN track t ON a.artistid = t.trackartist;
(用您想要的实际列代替a.*, t.*
)。
您可以在不声明跟踪艺术家是艺术家(artistid)的外键的情况下执行此操作。如果您确实做出了声明,那么区别在于SQLite将确保您永远不会在跟踪艺术家中放置一个不是有效艺术品的值,并且您永远不会更改或删除在跟踪艺术家中使用的artistid。
外键是一种维护表之间关联完整性的机制,但您可以在SELECT语句中“创建”任何关联,而与数据库中声明的任何主键或外键无关。