REPLACE语句的使用:
该语句是**insert(增加插入)和update(更新修改)**的结合体,如果替换的数据不存在该表中,则使用insert完成
如果发现数据已经存在(主键重复或者唯一重复)该表中,则会删除数据执行insert操作效果与更新相同。
eg:
mysql> select * from sanguoyanyi;
+----+-----------+-----+------+-----------------+
| id | name | sex | age | address |
+----+-----------+-----+------+-----------------+
| 1 | 刘备 | 男 | 50 | 陕西渭南 |
| 2 | 胡星 | 男 | 24 | 宁夏吴忠 |
| 3 | 关羽 | 男 | 38 | 河北涿郡 |
| 4 | 张飞 | 男 | 35 | 宁夏吴忠 |
| 5 | 李珂瑶 | 男 | 23 | 陕西渭南 |
| 6 | 赵云 | 男 | 29 | 河北石家庄 |
| 7 | 貂蝉 | 女 | 18 | 陕西西安 |
| 8 | 小乔 | 女 | 18 | 江苏杭州 |
| 9 | 马超 | 男 | 35 | 西凉 |
| 10 | 魏延 | 男 | 34 | 湖南长沙 |
| 11 | 黄忠 | 男 | 62 | 湖南长沙 |
+----+-----------+-----+------+-----------------+
11 rows in set (0.27 sec)
mysql> replace into sanguoyanyi values (null,"张辽","男",26,"内蒙"); ###增加插入
Query OK, 1 row affected (1.02 sec)
mysql> select * from sanguoyanyi;
+----+-----------+-----+------+-----------------+
| id | name | sex | age | address |
+----+-----------+-----+------+-----------------+
| 1 | 刘备 | 男 | 50 | 陕西渭南 |
| 2 | 胡星 | 男 | 24 | 宁夏吴忠 |
| 3 | 关羽 | 男 | 38 | 河北涿郡 |
| 4 | 张飞 | 男 | 35 | 宁夏吴忠 |
| 5 | 李珂瑶 | 男 | 23 | 陕西渭南 |
| 6 | 赵云 | 男 | 29 | 河北石家庄 |
| 7 | 貂蝉 | 女 | 18 | 陕西西安 |
| 8 | 小乔 | 女 | 18 | 江苏杭州 |
| 9 | 马超 | 男 | 35 | 西凉 |
| 10 | 魏延 | 男 | 34 | 湖南长沙 |
| 11 | 黄忠 | 男 | 62 | 湖南长沙 |
| 12 | 张辽 | 男 | 26 | 内蒙 |
+----+-----------+-----+------+-----------------+
12 rows in set (0.00 sec)
mysql> replace into sanguoyanyi values (2,"周瑜","男",33,"江东"); ###更新修改
Query OK, 2 rows affected (0.30 sec)
mysql> select * from sanguoyanyi;
+----+-----------+-----+------+-----------------+
| id | name | sex | age | address |
+----+-----------+-----+------+-----------------+
| 1 | 刘备 | 男 | 50 | 陕西渭南 |
| 2 | 周瑜 | 男 | 33 | 江东 |
| 3 | 关羽 | 男 | 38 | 河北涿郡 |
| 4 | 张飞 | 男 | 35 | 宁夏吴忠 |
| 5 | 李珂瑶 | 男 | 23 | 陕西渭南 |
| 6 | 赵云 | 男 | 29 | 河北石家庄 |
| 7 | 貂蝉 | 女 | 18 | 陕西西安 |
| 8 | 小乔 | 女 | 18 | 江苏杭州 |
| 9 | 马超 | 男 | 35 | 西凉 |
| 10 | 魏延 | 男 | 34 | 湖南长沙 |
| 11 | 黄忠 | 男 | 62 | 湖南长沙 |
| 12 | 张辽 | 男 | 26 | 内蒙 |
+----+-----------+-----+------+-----------------+
12 rows in set (0.00 sec)
mysql> update sanguoyanyi set name="诸葛亮",address="南阳" where id=5; ###update更新
Query OK, 1 row affected (0.34 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from sanguoyanyi;
+----+-----------+-----+------+-----------------+
| id | name | sex | age | address |
+----+-----------+-----+------+-----------------+
| 1 | 刘备 | 男 | 50 | 陕西渭南 |
| 2 | 周瑜 | 男 | 33 | 江东 |
| 3 | 关羽 | 男 | 38 | 河北涿郡 |
| 4 | 张飞 | 男 | 35 | 宁夏吴忠 |
| 5 | 诸葛亮 | 男 | 23 | 南阳 |
| 6 | 赵云 | 男 | 29 | 河北石家庄 |
| 7 | 貂蝉 | 女 | 18 | 陕西西安 |
| 8 | 小乔 | 女 | 18 | 江苏杭州 |
| 9 | 马超 | 男 | 35 | 西凉 |
| 10 | 魏延 | 男 | 34 | 湖南长沙 |
| 11 | 黄忠 | 男 | 62 | 湖南长沙 |
| 12 | 张辽 | 男 | 26 | 内蒙 |
+----+-----------+-----+------+-----------------+
12 rows in set (0.00 sec)