【问题标题】:SQLite replacing data in existing columnSQLite 替换现有列中的数据
【发布时间】:2015-10-22 19:42:44
【问题描述】:

对 SQLite 非常陌生,并且有一个对我很有帮助的基本问题。如果我有一个如下所示的表格:

_id   NAME
1     Mark
2     Bob

假设我在第 2 行中执行了一个插入语句并输入了名称 John。表格会是这样吗:

_id   NAME
1     Mark
2     John

或者我是否必须查询数据库,查看第 2 行是否已经包含名称,如果有,将其替换为 John?换句话说,它不会自动替换那里的内容?

【问题讨论】:

标签: sqlite


【解决方案1】:

基本上有3种方法可以改变表格内容:

  • INSERT:这将始终向表中添加新行
  • 更新:这将更改表中的现有行
  • DELETE:这将删除表中的现有行

假设您的表是这样定义的:

CREATE TABLE test (
    _id  INT NOT NULL AUTO_INCREMENT,
    Name varchar(32),
    PRIMARY KEY (id)
);

并且已经包含此数据:

_id NAME
1   Mark
2   Bob

如果你然后运行

INSERT INTO test (Name) VALUES ('John')

那么表格将如下所示:

_id NAME
1   Mark
2   Bob
3   John

请注意,您也可以这样做:

INSERT INTO test VALUES( 3, 'John' )

但是您必须知道3_id 列中的下一个可用号码。

如果您想更改 Name 所在行的 _id 2,您可以运行以下查询:

UPDATE test SET Name='John' WHERE _id = 2

【讨论】:

  • 如果您的 _id 是 PRIMARY KEY 并且您使用现有的 _id 值插入到列中怎么办?例如,插入名称为 John 的第 2 列(主键)。假设该列已经有一个名称(Bob),但您使用 INSERT 输入另一个名称(John)。是否仍会创建新行或什么都不会发生?
  • 首先,您不插入列,而是将行插入表中。但是,你会得到一个错误 - PRIMARY KEY 必须是唯一的。但是,如果您从表定义中省略了PRIMARY KEY(id),那么您将获得一个带有2, 'John' 的新行(并且带有2, 'Bob' 的旧行仍然存在)。我强烈建议您搜索“sql 介绍”(甚至还有 youtube 视频)并复习基础知识,以便了解术语。
猜你喜欢
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 2017-08-04
  • 2016-04-01
  • 1970-01-01
  • 2011-04-28
相关资源
最近更新 更多