Sqlite REFERENCES关键字

时间:2011-08-10 18:50:40

标签: python sql sqlite

有谁知道REFERENCES关键字在sqlite中的作用?例如,如果我有以下声明:fr int REFERENCES contacts(id)这意味着什么?如果我想SELECT count(fr) from TABLE WHERE我知道联系人的ID,我该如何使用它?

换句话说,我想创建一个SELECT语句,用于计算联系人ID等于某个数字的fr的数量。

2 个答案:

答案 0 :(得分:2)

回答问题的其他部分,你会这样做:

select count(*) from tablename where fr = contactid;

因为“引用”表示fr字段包含来自联系人中id字段的值。

一些额外的细节:你有两个表:contacts和“tablename”。在联系人中,你有各种各样的人的详细信息,我猜,每个人都有一个id。在“tablename”中,您有更多信息,表中的每一行都是“约”或“属于”联系人。所以“tablename”中的每一行都有一个标识该人的“fr”条目。它通过包含该人的id值的副本来做到这一点(可能每个人都有不同的id)。这就是“引用”告诉你的内容 - “fr”包含“id”的副本。

所以你想要做的是找到每个人“tablename”中的事物的数量。通常这意味着加入两个表,但在这种情况下你不必这样,因为在“tablename”中已经存在了该人的id的本地副本。所以你要做的就是在“tablename”中找到那些拥有该人ID的行,然后计算它们。这意味着你只需要找到“fr”等于id的那些行(因为你知道这是来自联系人的id的副本)。

答案 1 :(得分:1)

它创建一个指向id表中contacts字段的外键。我不记得它是否可以在这样的领域之后使用。你可以这样做。

CREATE TABLE foo (
    id int,
    fr int,
    FOREIGN KEY(fr) REFERENCES bar(id)
);