1、前言
语法 | 备注(存在主键) |
---|---|
insert ignore into | 若在数据库已经存在,则不执行此次操作。若在数据库中不存在,则将此次数据插入数据库中。 |
insert into not exists | 若在数据库已经存在,则不执行此次操作。若在数据库中不存在,则将此次数据插入数据库中。 |
insert into on duplicate key update | 若在数据库已经存在,则先更新,然后执行此次操作。若在数据库中不存在,则将此次数据插入数据库中。 |
replace into | 若在数据库已经存在,则直接删除,然后执行此次操作。若在数据库中不存在,则将此次数据插入数据库中。 |
2、案例
-- auto-generated definition
create table if not exists t_admin
(
id int auto_increment
primary key,
adminName varchar(50) null,
passWord varchar(50) null
);
INSERT INTO t_admin (id, adminName, passWord) VALUES (1, 'admin', 'admin');
INSERT INTO t_admin (id, adminName, passWord) VALUES (2, 'xiaoqian', '123456');
2.1 、insert ignore into
insert ignore into t_admin value (2,'itbestboy','123456');
2.2、 insert into not exists
insert into t_admin select 2,'itbestboy','123456' from t_admin where not exists(select id from t_admin where id=2);
2.3、insert into on duplicate key update
-- 主键值在数据库中已经存在,此时会先执行update 语句,然后在插入,
insert into t_admin value (2,'itbestboy','123456') on duplicate key update adminName='itbestboy', passWord='123456';
-- 注;当update语句后跟的值与value中的值不一致时,会按着update语句后的值进行入库操作。
insert into t_admin value (3,'itbestboy','123456') on duplicate key update adminName='tboy', passWord='1456';
2.4、replace into
-- 主键值在数据库中已经存在,此时会先删除这条记录,然后重新插入数据库中
replace into t_admin (id, adminName, passWord) VALUES (3, 'boy', '123456');
insert into t_admin value (3,'itbestboy','123456') on duplicate key update adminName='tboy', passWord='1456';
3、总结
原文始发于微信公众号(Itbestboy):避免插入时入坑的几种套路(MySQL版)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/98374.html