# REPLACE 语句

__*REPLACE*__

+ 在具有主键或唯一约束的表中使用 REPLACE 语句将现有行替换为新的
+ 在没有主键或唯一约束的表中,它的作用方式与 INSERT 语句相同
+ 语句返回的行数是删除和插入的行数的总和
  + rows affected 等于 1: 插入了一行,未删除任何行
  + rows affected 大于 1: 在插入新行之前删除了 1 或多个原有行。
```
tidb> SELECT * FROM test.r1;
+----+------+
| id | name |
+----+------+
|  1 | A    |
|  2 | B    |
+----+------+

tidb> REPLACE INTO test.r1 (id,name) VALUES (2,'C');
Query OK, ~!@2 rows affected@!~ (0.00 sec)

tidb> SELECT * FROM test.r1;
+----+------+
| id | name |
+----+------+
|  1 | A    |
|  2 | C    |
+----+------+
```
----------------------------------------------------------------------------

从语义上看,REPLACE 语句是 DELETE 语句和 INSERT 语句的结合,可用于简化应用程序代码。