SQLite 替换现有列中的数据
Posted
技术标签:
【中文标题】SQLite 替换现有列中的数据【英文标题】:SQLite replacing data in existing column 【发布时间】:2015-10-22 19:42:44 【问题描述】:对 SQLite 非常陌生,并且有一个对我很有帮助的基本问题。如果我有一个如下所示的表格:
_id NAME
1 Mark
2 Bob
假设我在第 2 行中执行了一个插入语句并输入了名称 John。表格会是这样吗:
_id NAME
1 Mark
2 John
或者我是否必须查询数据库,查看第 2 行是否已经包含名称,如果有,将其替换为 John?换句话说,它不会自动替换那里的内容?
【问题讨论】:
How do I do a simple 'Find and Replace" in MsSQL?的可能重复 AFAIKINSERT
语句和 UPDATE
语句不同。
那么当使用 INSERT 语句插入已经有数据的列时会发生什么。它根本没有做任何事情吗?
【参考方案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 视频)并复习基础知识,以便了解术语。以上是关于SQLite 替换现有列中的数据的主要内容,如果未能解决你的问题,请参考以下文章