数据库教程:mysql中insert ignore、insert和replace的区别及说明

insert ignore、insert和replace的区别指令已存在不存在举例insert报错插入insert into names(name, age) values(“小明&rdq

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 |  +----+--------+------+

以上为个人经验,希望能给大家一个参考,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。 

需要了解更多数据库技术:mysql中insert ignore、insert和replace的区别及说明,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/1209780.html

(0)
上一篇 2022年8月30日
下一篇 2022年8月30日

精彩推荐