【问题标题】:Inserting and querying data from table with foreign key in SQLite在 SQLite 中使用外键从表中插入和查询数据
【发布时间】:2017-12-05 18:04:23
【问题描述】:

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

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。现在我想向表 Items 添加 3 条记录,因此 IdList 将为 1,名称将为 item1、item2 和 item3。插入查询将如何?然后,如果我想成为前任。其 IdList 为 1 的表项中的所有名称,选择查询将如何?谢谢。

【问题讨论】:

  • 外键约束只是一个约束,即它限制您插入不一致的值。但是,它不会改变您编写查询的方式。

标签: android sqlite select insert foreign-keys


【解决方案1】:

外键是一个约束(必须遵循的规则),它没有定义用于提取数据的关系商店/链接。换句话说,如果不满足规则,则无法插入行。这并不是说每次您访问其中一个表时它们都会自动链接。

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

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

所以你会按照以下方式做一些事情:-

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    相关资源
    最近更新 更多