📜  MySQL 中的 REPLACE()函数(1)

📅  最后修改于: 2023-12-03 15:03:05.630000             🧑  作者: Mango

MySQL 中的 REPLACE()函数

在 MySQL 数据库中,REPLACE() 函数被用来将某个值替换为新的值。它可以被用来替换一个已存在的行或者插入一条新的行。该函数的基本语法如下:

REPLACE INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

其中,table_name 是所要插入数据的表名,后面的括号中包含所要插入的列名和列对应的值。

用法示例

假设我们有一个 person 表,该表包含 idname 以及 age 三个字段,数据如下:

mysql> SELECT * FROM person;
+----+-------+-----+
| id | name  | age |
+----+-------+-----+
|  1 | Alice |  20 |
|  2 | Bob   |  23 |
|  3 | Cindy |  25 |
+----+-------+-----+

现在我们想要插入一条新的数据,或者更新已存在的数据,在这个过程中我们可以使用 REPLACE() 函数。

插入新数据

我们可以像下面这样插入一条新数据:

REPLACE INTO person (id, name, age) VALUES (4, 'Dan', 22);

此时,整个 person 表的数据就变成了:

mysql> SELECT * FROM person;
+----+-------+-----+
| id | name  | age |
+----+-------+-----+
|  1 | Alice |  20 |
|  2 | Bob   |  23 |
|  3 | Cindy |  25 |
|  4 | Dan   |  22 |
+----+-------+-----+

可以看到,我们成功地插入了一条新的数据。

更新已存在的数据

如果我们想要更新已经存在的数据,在使用 REPLACE() 函数时,需要指定已存在的数据所对应的主键。例如,我们想要更新 id 为 2 的数据,可以像下面这样运行:

REPLACE INTO person (id, name, age) VALUES (2, 'Bob', 24);

此时,整个 person 表的数据就变成了:

mysql> SELECT * FROM person;
+----+-------+-----+
| id | name  | age |
+----+-------+-----+
|  1 | Alice |  20 |
|  2 | Bob   |  24 |
|  3 | Cindy |  25 |
|  4 | Dan   |  22 |
+----+-------+-----+

可以看到,我们成功地将 id 为 2 的数据中的 age 从 23 更新到了 24。

注意事项
  • REPLACE() 函数在执行时会先删除已经存在的数据,再插入新的数据。因此,如果该表中有其他字段有数据,而在插入时没有指定该字段的值,则该字段的值会被清空。
  • 在使用 REPLACE() 函数时,需要注意所指定的主键必须是唯一的,否则会出现主键冲突的错误。