MySQL替换

时间:2019-11-20 08:52:08  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用MySQL REPLACE语句在数据库表中插入或更新数据。

MySQL REPLACE语句简介

MySQL REPLACE语句是SQL标准的扩展。
MySQL REPLACE语句的工作方式如下:

步骤1.如果发生重复的键错误,请在表中插入新行。

步骤2.如果由于重复键错误而导致插入失败:

  • 从表中删除导致重复键错误的冲突行。

  • 再次将新行插入表中。

为了确定表中是否已经存在新行,MySQL使用PRIMARY KEY或UNIQUE KEY索引。
如果表没有这些索引之一,则REPLACE就像INSERT语句一样工作。

要使用REPLACE语句,您至少需要对表具有INSERT和DELETE特权。

请注意,MySQL具有REPLACE字符串函数,这不是本教程介绍的REPLACE语句。

使用MySQL REPLACE插入新行

下面说明了REPLACE语句的语法:

REPLACE [INTO] table_name(column_list)
VALUES(value_list);

除了关键字REPLACE外,它与INSERT语句相似。

让我们看一下以下使用REPLACE语句的示例,以了解其工作原理。

首先,创建一个新的表,名称如下:

CREATE TABLE cities (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    population INT NOT NULL
);

接下来,将一些行插入citys表中:

INSERT INTO cities(name,population)
VALUES('New York',8008278),
	  ('Los Angeles',3694825),
	  ('San Diego',1223405);

然后,从"城市"表中查询数据以验证插入操作。

SELECT * FROM cities;

之后,使用REPLACE语句将洛杉矶市的人口更新为3696820。

REPLACE INTO cities(id,population)
VALUES(2,3696820);

最后,再次查询城市表中的数据以确认替换。

SELECT * FROM cities;

现在,名称列中的值为NULL。
REPLACE语句的工作方式如下:

  • 首先,REPLACE语句尝试在城市表中插入新行。
    插入失败,因为城市表中已经存在ID 2。

  • 然后,REPLACE语句删除ID为2的行,并插入一个ID为2且填充为3696820的新行。
    由于没有为name列指定值,因此将其设置为NULL。

使用MySQL REPLACE语句更新一行

下面说明了如何使用REPLACE语句更新数据:

REPLACE INTO table
SET column1 = value1,
    column2 = value2;

除了REPLACE关键字外,此语句类似于UPDATE语句。
此外,它没有WHERE子句。

本示例使用REPLACE语句将凤凰城的人口更新为1768980:

REPLACE INTO cities
SET id = 4,
    name = 'Phoenix',
    population = 1768980;

与UPDATE语句不同,如果您未在SET子句中指定该列的值,则REPLACE语句将使用该列的默认值。

SELECT * FROM cities;

使用MySQL REPLACE从SELECT语句插入数据

下面说明了REPLACE语句,该语句将数据插入表中,数据来自查询。

REPLACE INTO table_1(column_list)
SELECT column_list
FROM table_2
WHERE where_condition;

请注意,REPLACE语句的这种形式类似于INSERT INTO SELECT语句。

以下语句使用REPLACE INTO语句在同一表中复制一行:

REPLACE INTO 
    cities(name,population)
SELECT 
    name,
    population 
FROM 
   cities 
WHERE id = 1;

在本教程中,您学习了不同形式的MySQL REPLACE语句,可以在表中插入或更新数据。