避免MySQL替换逻辑SQL的坑爹操作

  

避免MySQL替换逻辑SQL的坑爹操作

  

替换成和插入重复键区别

  <人力资源/>   

<强>替换的用法

  
  

当不冲突时相当于插入,其余列默认值
当关键冲突时,自增列更新,取代冲突列,其余列默认值
Com_replace会加1
Innodb_rows_updated会加1

     

<强>插入…重复关键的用法

  
  

不冲突时相当于插入,其余列默认值
当与关键冲突时,只更新相应字段值。
Com_insert会加1
Innodb_rows_inserted会增加1

     

实验展示

  <人力资源/>   

<强>表结构

  
  

创建表helei1 (
id int(10)无符号NOT NULL AUTO_INCREMENT,
名称varchar (20) NOT NULL默认”,
年龄非常小的整数(3)无符号NOT NULL默认0
主键(id),
唯一键<代码> uk_name (<代码>名称> )
引擎=innodb AUTO_INCREMENT=1
默认字符集=utf8;
& lt;/br>

     

<强>表数据

  
  

root@127.0.0.1 (helei)比;select * from helei1;
+——+ + - - - - - - - - - - - - - - - - - - - - +
| | id名称| |年龄
+——+ + - - - - - - - - - - - - - - - - - - - - +
| 1 |贺磊| 26 |
| 2 |小明| | 28日
| 3 |小红| 26 |
+——+ + - - - - - - - - - - - - - - - - - - - - +
3行组(0.00秒)

     

<强>替换成用法

  
  

root@127.0.0.1 (helei)比;替换成helei1(名字)值(“贺磊”);
查询好,2行影响(0.00秒)

  

root@127.0.0.1 (helei)比;select * from helei1;
+——+ + - - - - - - - - - - - - - - - - - - - - +
| | id名称| |年龄
+——+ + - - - - - - - - - - - - - - - - - - - - +
| 2 |小明| | 28日
| 3 |小红| 26 |
| 4 |贺磊| 0 |
+——+ + - - - - - - - - - - - - - - - - - - - - +
3行组(0.00秒)
root@127.0.0.1 (helei)比;替换成helei1(名字)值(“爱璇”);
查询好了,1行影响(0.00秒)

  

root@127.0.0.1 (helei)比;select * from helei1;
+——+ + - - - - - - - - - - - - - - - - - - - - +
| | id名称| |年龄
+——+ + - - - - - - - - - - - - - - - - - - - - +
| 2 |小明| | 28日
| 3 |小红| 26 |
| 4 |贺磊| 0 |
| 5 |爱璇| 0 |
+——+ + - - - - - - - - - - - - - - - - - - - - +
4行组(0.00秒)

     

替换的用法
当没有关键冲突时,替换成相当于插入,其余列默认值
当关键冲突时,自增列更新,取代冲突列,其余列默认值

  

<强>插入…复制键:

  
  

root@127.0.0.1 (helei)比;select * from helei1;
+——+ + - - - - - - - - - - - - - - - - - - - - +
| | id名称| |年龄
+——+ + - - - - - - - - - - - - - - - - - - - - +
| 2 |小明| | 28日
| 3 |小红| 26 |
| 4 |贺磊| 0 |
| 5 |爱璇| 0 |
+——+ + - - - - - - - - - - - - - - - - - - - - +
4行组(0.00秒)

  

root@127.0.0.1 (helei)比;插入helei1(姓名、年龄)值(“贺磊”,0)复制关键更新年龄=100;
查询好,2行影响(0.00秒)

  

root@127.0.0.1 (helei)比;select * from helei1;
+——+ + - - - - - - - - - - - - - - - - - - - - +
| | id名称| |年龄
+——+ + - - - - - - - - - - - - - - - - - - - - +
| 2 |小明| | 28日
| 3 |小红| 26 |
| 4 |贺磊| 100 |
| 5 |爱璇| 0 |
+——+ + - - - - - - - - - - - - - - - - - - - - +
4行组(0.00秒)

  

root@127.0.0.1 (helei)比;select * from helei1;
+——+ + - - - - - - - - - - - - - - - - - - - - +
| | id名称| |年龄
+——+ + - - - - - - - - - - - - - - - - - - - - +
| 2 |小明| | 28日
| 3 |小红| 26 |
| 4 |贺磊| 100 |
| 5 |爱璇| 0 |
+——+ + - - - - - - - - - - - - - - - - - - - - +
4行组(0.00秒)

  

root@127.0.0.1 (helei)比;插入helei1(名字)值(“爱璇”)在复制关键更新年龄=120;
查询好,2行影响(0.01秒)

  

root@127.0.0.1 (helei)比;select * from helei1;
+——+ + - - - - - - - - - - - - - - - - - - - - +
| | id名称| |年龄
+——+ + - - - - - - - - - - - - - - - - - - - - +
| 2 |小明| | 28日
| 3 |小红| 26 |
| 4 |贺磊| 100 |
| 5 |爱璇| 120 |
+——+ + - - - - - - - - - - - - - - - - - - - - +
4行组(0.00秒)

  

root@127.0.0.1 (helei)比;插入helei1(名字)值(“不存在的)复制关键更新年龄=80;
查询好了,1行影响(0.00秒)

  

root@127.0.0.1 (helei)比;select * from helei1;

避免MySQL替换逻辑SQL的坑爹操作