REPLACE
MySQL REPLACE语句是标准SQL的MySQL扩展。MySQL REPLACE语句的工作原理如下:
- 如果新行已不存在,则MySQL REPLACE 语句将插入新行。
- 如果新行已存在,则 REPLACE 语句首先删除旧行,然后插入新行。在某些情况下,REPLACE语句仅更新现有行。
注意:要确定表中是否已存在新行,MySQL使用PRIMARY KEY或UNIQUE KEY 索引。如果表没有这些索引之一,则REPLACE语句等同于INSERT语句。
示例
CREATE TABLE cities (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
population INT NOT NULL
);
INSERT INTO cities(name,population)
VALUES('New York',8008278),
('Los Angeles',3694825),
('San Diego',1223405);
使用REPLACE语句更新洛杉矶城市的人口3696820
REPLACE INTO cities(id, population)
VALUES(2,3696820);
REPLACE工作原理如下:
- REPLACE语句首先使用列表提供的信息将新行插入cities表中。插入失败,因为cities表中已存在id为2的行,因此,MySQL会引发重复键错误。
- 然后REPLACE语句将更新具有id列值中指定的键的行。在正常过程中,它将首先删除具有冲突ID的旧行,然后插入新行。
MySQL REPLACE和INSERT
REPLACE语句的第一种形式类似于INSERT语句,除了关键字INSERT被关键字替换REPLACE如下:
REPLACE INTO table_name(column_list)
VALUES(value_list);
例如,如果要在cities表中插入新行
REPLACE INTO cities(name,population)
VALUES('Phoenix',1321523);
注意:未出现在REPLACE语句中的列的默认值将插入到相应的列中。如果列具有NOT NULL属性且没有默认值,并且您未在REPLACE语句中指定值,则MySQL将引发错误。这是REPLACE和INSERT语句之间的区别。
REPLACE INTO cities(name)
VALUES('Houston');
MySQL REPLACE和UPDATE
第二种形式的 REPLACE 陈述类似于以下UPDATE陈述:
REPLACE INTO table
SET column1 = value1,
column2 = value2;
例如,如果要更新Phoenix城市的人口1768980,请使用以下REPLACE语句:
REPLACE INTO cities
SET id = 4,
name = 'Phoenix',
population = 1768980;
注意:与UPDATE语句不同,如果未在SET子句中指定列的值,则REPLACE语句将使用列的默认值
MySQL REPLACE INTO和SELECT
第三种形式的 REPLACE 语句类似于INSERT INTO SELECT语句:
REPLACE INTO table_1(column_list)
SELECT column_list
FROM table_2
WHERE where_condition;
假设要复制id值为1的城市,请将REPLACE INTO SELECT语句用作以下查询:
REPLACE INTO cities(name,population)
SELECT name,population FROM cities
WHERE id = 1;
注意文章来源:https://www.toymoban.com/news/detail-405189.html
- 如果开发的应用程序不仅支持MySQL数据库,还支持其他关系数据库管理系统(RDBMS),则应避免使用REPLACE语句,因为其他RDBMS可能不支持它。相反,您可以在事务中使用DELETE 和 INSERT语句的组合 。
- 如果使用的是REPLACE在具有TABLE语句触发器和重复键错误发生的删除,触发器将按照以下顺序被解雇:BEFORE INSERT BEFORE DELETE,AFTER DELETE,AFTER INSERT 万一REPLACE语句删除当前行并插入新行。如果REPLACE语句更新当前行,则会触发BEFORE UPDATE和AFTER UPDATE触发器。
sql文章来源地址https://www.toymoban.com/news/detail-405189.html
到了这里,关于SQL语法——REPLACE语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!