如何避免MySQL替换逻辑SQL的坑
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章给大家分享的是有关如何避免MySQL替换逻辑SQL的坑的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。replace into和insert into on dupl
千家信息网最后更新 2025年11月07日如何避免MySQL替换逻辑SQL的坑
这篇文章给大家分享的是有关如何避免MySQL替换逻辑SQL的坑的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
replace into和insert into on duplicate key 区别
replace的用法
当不冲突时相当于insert,其余列默认值
当key冲突时,自增列更新,replace冲突列,其余列默认值
Com_replace会加1
Innodb_rows_updated会加1
Insert into …on duplicate key的用法
不冲突时相当于insert,其余列默认值
当与key冲突时,只update相应字段值。
Com_insert会加1
Innodb_rows_inserted会增加1
实验展示
表结构
create table helei1(id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(20) NOT NULL DEFAULT '',age tinyint(3) unsigned NOT NULL default 0,PRIMARY KEY(id),UNIQUE KEY uk_name (name))ENGINE=innodb AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
表数据
root@127.0.0.1 (helei)> select * from helei1;+----+-----------+-----+| id | name | age |+----+-----------+-----+| 1 | 贺磊 | 26 || 2 | 小明 | 28 || 3 | 小红 | 26 |+----+-----------+-----+3 rows in set (0.00 sec)
replace into用法
root@127.0.0.1 (helei)> replace into helei1 (name) values('贺磊');Query OK, 2 rows affected (0.00 sec)root@127.0.0.1 (helei)> select * from helei1;+----+-----------+-----+| id | name | age |+----+-----------+-----+| 2 | 小明 | 28 || 3 | 小红 | 26 || 4 | 贺磊 | 0 |+----+-----------+-----+3 rows in set (0.00 sec)root@127.0.0.1 (helei)> replace into helei1 (name) values('爱璇');Query OK, 1 row affected (0.00 sec)root@127.0.0.1 (helei)> select * from helei1;+----+-----------+-----+| id | name | age |+----+-----------+-----+| 2 | 小明 | 28 || 3 | 小红 | 26 || 4 | 贺磊 | 0 || 5 | 爱璇 | 0 |+----+-----------+-----+4 rows in set (0.00 sec)replace的用法
当没有key冲突时,replace into 相当于insert,其余列默认值
当key冲突时,自增列更新,replace冲突列,其余列默认值
Insert into …on duplicate key:
root@127.0.0.1 (helei)> select * from helei1;+----+-----------+-----+| id | name | age |+----+-----------+-----+| 2 | 小明 | 28 || 3 | 小红 | 26 || 4 | 贺磊 | 0 || 5 | 爱璇 | 0 |+----+-----------+-----+4 rows in set (0.00 sec)root@127.0.0.1 (helei)> insert into helei1 (name,age) values('贺磊',0) on duplicate key update age=100;Query OK, 2 rows affected (0.00 sec)root@127.0.0.1 (helei)> select * from helei1;+----+-----------+-----+| id | name | age |+----+-----------+-----+| 2 | 小明 | 28 || 3 | 小红 | 26 || 4 | 贺磊 | 100 || 5 | 爱璇 | 0 |+----+-----------+-----+4 rows in set (0.00 sec)root@127.0.0.1 (helei)> select * from helei1;+----+-----------+-----+| id | name | age |+----+-----------+-----+| 2 | 小明 | 28 || 3 | 小红 | 26 || 4 | 贺磊 | 100 || 5 | 爱璇 | 0 |+----+-----------+-----+4 rows in set (0.00 sec)root@127.0.0.1 (helei)> insert into helei1 (name) values('爱璇') on duplicate key update age=120;Query OK, 2 rows affected (0.01 sec)root@127.0.0.1 (helei)> select * from helei1;+----+-----------+-----+| id | name | age |+----+-----------+-----+| 2 | 小明 | 28 || 3 | 小红 | 26 || 4 | 贺磊 | 100 || 5 | 爱璇 | 120 |+----+-----------+-----+4 rows in set (0.00 sec)root@127.0.0.1 (helei)> insert into helei1 (name) values('不存在') on duplicate key update age=80;Query OK, 1 row affected (0.00 sec)root@127.0.0.1 (helei)> select * from helei1;+----+-----------+-----+| id | name | age |+----+-----------+-----+| 2 | 小明 | 28 || 3 | 小红 | 26 || 4 | 贺磊 | 100 || 5 | 爱璇 | 120 || 8 | 不存在 | 0 |+----+-----------+-----+5 rows in set (0.00 sec)感谢各位的阅读!关于"如何避免MySQL替换逻辑SQL的坑"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
小明
小红
冲突
逻辑
内容
更多
篇文章
更新
不错
实用
字段
数据
文章
看吧
知识
结构
参考
实验
帮助
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
工商银行服务器连接不上
学校网络安全管理情况
数据库第二范式判断
dbc数据库修改佩戴位置
安徽搜集客户外贸软件开发
基岩版服务器配置文件翻译
dtu服务器软件
大学网络安全微课
武大国家网络安全学院规划
软件开发辛苦知乎
河北网络卫星授时服务器
网络技术学习桌椅
网络安全日志 公安查处
龙芯服务器管理教程
mdf数据库管理系统
服务器目录安全性怎么设置
查找公司情况的数据库
大功率服务器电源行业
三级网络技术押题
服务器如何传输网络技术
护苗网络安全课视频之四
pg数据库怎么创建临时表
花亦山心之月安卓服务器
天堂w什么服务器
茂名 软件开发公司
疫情期间如何正确对待网络安全
如何做数据库截断
眼科科研数据库
dataset存入数据库
数据库数字类型大全