Python Sqlite引用关键字

Python Sqlite引用关键字,python,sql,sqlite,Python,Sql,Sqlite,有人知道引用关键字在sqlite中的作用吗?例如,如果我有以下语句:fr int REFERENCES contacts(id)这是什么意思?如果我想从表中选择count(fr)我知道联系人的id,我该如何使用它 换句话说,我想创建一个SELECT语句,对联系人id等于某个数字的fr的数量进行计数。它创建一个外键,指向contacts表中的id字段。不过,我不记得它是否可以在这样的场地之后使用。你能做到 CREATE TABLE foo ( id int, fr int,

有人知道引用关键字在sqlite中的作用吗?例如,如果我有以下语句:
fr int REFERENCES contacts(id)
这是什么意思?如果我想
从表中选择count(fr)
我知道联系人的id,我该如何使用它


换句话说,我想创建一个
SELECT
语句,对联系人id等于某个数字的
fr
的数量进行计数。

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

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

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

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

要回答问题的另一部分,请执行以下操作:

select count(*) from tablename where fr = contactid;
因为“references”表示fr字段包含contacts中id字段的值

一些额外的细节:您有两个表:contacts和tablename。在contacts中,我想你有各种人的详细信息,每个人都有一个id。在“tablename”中,你有更多的信息,表中的每一行都是“关于”或“属于”contacts中的某个人。所以“tablename”中的每一行在“fr”中都有一个条目来标识这个人。它通过包含该人员的id值的副本(假设每个人都有不同的id)来实现这一点。这就是“参考资料”告诉你的,“fr”包含“id”的副本


所以,您要做的是在“tablename”中找到每个人的计数。通常这意味着连接两个表,但在这种情况下,您不必这样做,因为在“tablename”中已经有个人id的本地副本。因此,您所要做的就是在“tablename”中找到那些具有此人id的行,并对它们进行计数。这意味着您只需找到“fr”等于id的行(因为您知道这是联系人id的副本)。

要回答问题的另一部分,请执行以下操作:

select count(*) from tablename where fr = contactid;
因为“references”表示fr字段包含contacts中id字段的值

一些额外的细节:您有两个表:contacts和tablename。在contacts中,我想你有各种人的详细信息,每个人都有一个id。在“tablename”中,你有更多的信息,表中的每一行都是“关于”或“属于”contacts中的某个人。所以“tablename”中的每一行在“fr”中都有一个条目来标识这个人。它通过包含该人员的id值的副本(假设每个人都有不同的id)来实现这一点。这就是“参考资料”告诉你的,“fr”包含“id”的副本


所以,您要做的是在“tablename”中找到每个人的计数。通常这意味着连接两个表,但在这种情况下,您不必这样做,因为在“tablename”中已经有个人id的本地副本。因此,您所要做的就是在“tablename”中找到那些具有此人id的行,并对它们进行计数。这意味着您只需要找到“fr”等于id的行(因为您知道这是联系人id的副本)。

您能告诉我这里的逻辑以及它与.schema的关系吗?我添加了一些-希望能有所帮助。谢谢。如果您在第一个表中没有fr引用,那么连接看起来如何产生相同的SQL结果?好吧,这不是一个完全正确的问题,因为除非您有某种方式连接两个表,否则您无法这样做!你更可能知道,比如说,联系人的名字。这不是id,因此不在另一个表中。然后,您将加入,这样您就可以通过id/fr使用名称来查找计数。有多种写入联接的方法,但一种简单的方法是从“tablename”中选择count(*),其中tablename.fr=contacts.id和contacts.name='thenameyouwant'-查看如何在contacts表中找到名称,然后“跳转”有了参考。你能告诉我这里的逻辑以及它是如何与.schema联系在一起的吗?我添加了一些-希望能有所帮助。谢谢。如果您在第一个表中没有fr引用,那么连接看起来如何产生相同的SQL结果?好吧,这不是一个完全正确的问题,因为除非您有某种方式连接两个表,否则您无法这样做!你更可能知道,比如说,联系人的名字。这不是id,因此不在另一个表中。然后,您将加入,这样您就可以通过id/fr使用名称来查找计数。有多种写入联接的方法,但一种简单的方法是从“tablename”中选择计数(*),其中tablename.fr=contacts.id和contacts.name='thenameyouwant'-查看如何在contacts表中找到名称,然后使用引用“跳转”。