在SQLite中使用外键从表中插入和查询数据

时间:2017-12-05 18:04:23

标签: android sqlite select insert foreign-keys

我想创建两个相关的表。我创建表的查询如下所示:

static final String SQL_CREATE_TABLE_LISTS = 
"CREATE TABLE Lists(Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT);";
static final String SQL_CREATE_TABLE_ITEMS = 
"CREATE TABLE Items(IdList INTEGER, ItemName TEXT, FOREIGN KEY(IdList) REFERENCES Lists(Id));";

我现在想要插入并从表项中选择一些数据,但我不知道查询应该如何。假设我在表列表中有一条记录:id = 1和name = element1。现在我想向表项添加3条记录,因此IdList为1,name为item1,item2和item3。插入查询将如何?然后,如果我想采取前任。来自表项的所有名称,其IdList为1,选择查询将如何?感谢。

1 个答案:

答案 0 :(得分:1)

FOREIGN KEY是一个约束(必须遵循的规则),它没有定义用于提取数据的关系/链接。换句话说,它说如果不符合规则则无法插入行。并不是说每次访问它们自动链接的任何一个表。

插入时,首先插入列表,然后使用(检查)可用列表插入项目。您不能直接插入/跨多个表。

在查询数据时需要使用JOIN,因为FOREIGN KEY只是插入行时检查的规则(约束)。

所以你会按照以下方式做点什么: -

SELECT Lists.Id, Lists.Name, Items.ItemName FROM Lists JOIN Items ON Lists.Id = Items.IdList