mysql中insert ignore、insert和replace的区别及说明
更新时间:2022年08月25日 11:29:59 作者:彭世瑜
这篇文章主要介绍了mysql中insert ignore、insert和replace的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
insert ignore、insert和replace的区别
| 指令 | 已存在 | 不存在 | 举例 |
|---|---|---|---|
| insert | 报错 | 插入 | insert into names(name, age) values(“小明”, 23); |
| insert ignore | 忽略 | 插入 | insert ignore into names(name, age) values(“小明”, 24); |
| replace | 替换 | 插入 | replace into names(name, age) values(“小明”, 25); |
表要求:有PrimaryKey,或者unique索引
结果:表id都会自增
测试代码
创建表
CREATE TABLE names( id INT(10) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) UNIQUE, age INT(10) )
插入数据
mysql> insert into names(name, age) values("小明", 24);
mysql> insert into names(name, age) values("大红", 24);
mysql> insert into names(name, age) values("大壮", 24);
mysql> insert into names(name, age) values("秀英", 24);
mysql> select * from names;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | 小明 | 24 |
| 2 | 大红 | 24 |
| 3 | 大壮 | 24 |
| 4 | 秀英 | 24 |
+----+--------+------+insert
插入已存在, id会自增,但是插入不成功,会报错
mysql> insert into names(name, age) values("小明", 23);
ERROR 1062 (23000): Duplicate entry '小明' for key 'name'replace
已存在替换,删除原来的记录,添加新的记录
mysql> replace into names(name, age) values("小明", 23);
Query OK, 2 rows affected (0.00 sec)
mysql> select * from names;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 2 | 大红 | 24 |
| 3 | 大壮 | 24 |
| 4 | 秀英 | 24 |
| 6 | 小明 | 23 |
+----+--------+------+不存在替换,添加新的记录
mysql> replace into names(name, age) values("大名", 23);
Query OK, 1 row affected (0.00 sec)
mysql> select * from names;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 2 | 大红 | 24 |
| 3 | 大壮 | 24 |
| 4 | 秀英 | 24 |
| 6 | 小明 | 23 |
| 7 | 大名 | 23 |
+----+--------+------+insert ignore
插入已存在,忽略新插入的记录,id会自增,不会报错
mysql> insert ignore into names(name, age) values("大壮", 25);
Query OK, 0 rows affected, 1 warning (0.00 sec)插入不存在,添加新的记录
mysql> insert ignore into names(name, age) values("壮壮", 25);
Query OK, 1 row affected (0.01 sec)
mysql> select * from names;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 2 | 大红 | 24 |
| 3 | 大壮 | 24 |
| 4 | 秀英 | 24 |
| 6 | 小明 | 23 |
| 7 | 大名 | 23 |
| 10 | 壮壮 | 25 |
+----+--------+------+以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
MySql,MVCC实现及其机制,快照读在RC,RR下的区别说明
这篇文章主要介绍了MySql,MVCC实现及其机制,快照读在RC,RR下的区别说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-04-04
MySql5.6使用validate password 插件加强密码强度的安装及使用方法
在mysql5.6中使用validate password插件加强密码强度,支持密码的强度要求,是一款非常好用的密码加强插件,下面小编通过本文给大家介绍MySql5.6使用validate password 插件加强密码强度的安装及使用方法,小伙伴们一起学习吧2016-07-07
SQL Server 2005 安装遇到的错误提示和解决方法
在安装SQL Server 2005时有时会出现意想不到的问题,如IIS,性能计数器,OWC11,无法配置外围应用的问题,下面笔者分享一下在安装SQL Server 2005时常见问题解决方法2014-01-01
关于MySQL innodb_autoinc_lock_mode介绍
下面小编就为大家带来一篇关于MySQL innodb_autoinc_lock_mode介绍。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-03-03
mysql创建外键报错的原因及解决(can't not create table)
这篇文章主要介绍了mysql创建外键报错的原因及解决方案(can't not create table),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-09-09


最新评论