MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL替换

MySQL中的REPLACE语句是SQL Standard的扩展。该语句与INSERT语句的工作原理相同,不同之处在于,如果旧行与表中的PRIMARY KEY或UNIQUE索引的新记录匹配,则此命令在添加新行之前删除了旧行。
当我们要将现有记录更新到表中以使其保持更新时,此语句是必需的。如果为此目的使用标准插入查询,它将为PRIMARY KEY或UNIQUE键错误提供重复条目。在这种情况下,我们将使用REPLACE语句执行我们的任务。 REPLACE命令要求执行以下两个 可能操作之一:
如果在现有数据行中找不到匹配值,则执行标准INSERT语句。 如果找到重复的记录,那么replace命令将删除现有行,然后将新记录添加到表中。
在REPLACE语句中,更新分两个步骤执行。首先,它将删除现有记录,然后添加新更新的记录,类似于标准INSERT命令。因此,可以说REPLACE语句执行两个标准函数, DELETE INSERT
语法
以下是 MySQL 中 REPLACE 语句的语法:
REPLACE [INTO] table_name(column_list)
VALUES(value_list);
MySQL REPLACE示例
让我们借助示例来了解REPLACE语句在MySQL中的工作。首先,我们将使用以下语句创建一个名为 " Person" 的表:
CREATE TABLE Person (
  ID int AUTO_INCREMENT PRIMARY KEY,
  Name varchar(45) default NULL,
  Email varchar(45) default NULL UNIQUE,
  City varchar(25) default NULL
);
接下来,我们需要使用 INSERT 语句将记录填充到表中,如下所示:
INSERT INTO Person(ID, Name, Email, City) 
VALUES (1,'Mike', 'mike@lidihuo.com', 'California'), 
(2, 'Alexandar', 'alexandar@lidihuo.com', 'New York'), 
(3, 'Adam', 'adam@lidihuo.com', 'Los Angeles'),
(4, 'Peter', 'Peter@lidihuo.com', 'Alaska');
执行 SELECT 语句以验证可以在下面显示的记录输出:
MySQL REPLACE
将数据验证为表格后,我们可以将任何旧行替换为使用REPLACE语句的新行。执行以下语句,更新ID为4的人的 城市
REPLACE INTO Person (id, city)
VALUES(4,'Amsterdam');
成功执行上述语句后,需要再次查询表Person的数据以验证替换。
MySQL REPLACE
名称电子邮件列中的值现在为 NULL 。这是因为REPLACE语句的工作方式如下:
此语句首先尝试在Person表中插入新行。但是插入新行失败,因为表中已经存在id = 4、 因此该语句首先删除id = 4的行,然后插入与id和阿姆斯特丹相同的id和城市的新行。由于我们尚未为name和email列指定值,因此将其设置为NULL。

MySQL REPLACE语句以更新行

我们可以使用以下REPLACE语句将行数据更新为表:
REPLACE INTO table
SET column1 = value1, column2 = value2;
除了REPLACE关键字外,上述语法类似于 UPDATE语句。注意,我们不能在该语句中使用 WHERE子句。
执行以下示例使用REPLACE语句将名为 Mike 的人的城市从 加利福尼亚更新为 伯明翰
REPLACE INTO Person
SET ID = 1,
    Name = 'Mike',
    City = 'Birmingham';
对该表进行验证后,我们将看到以下输出:
MySQL REPLACE
如果我们尚未在 SET子句中指定列的值,该命令的工作方式类似于 UPDATE语句 ,这意味着REPLACE语句将使用该列的默认值。

MySQL REPLACE插入SELECT语句中的数据。

我们可以使用以下REPLACE INTO语句将数据插入到具有查询返回数据的表中。
REPLACE INTO table1(column_list)
SELECT column_list
FROM table2
WHERE condition;
请注意,上面的REPLACE查询类似于 INSERT INTO SELECT 语句。执行下面的示例,该示例使用REPLACE INTO语句在同一表中复制一行。
REPLACE INTO Person(Name, City)
SELECT Name, City 
FROM Person WHERE id = 2;
对该表进行验证后,我们将获得以下输出。在此输出中,我们可以看到已成功添加了同一表中一行的副本。
MySQL REPLACE
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4