关于mysql数据插入的几种方式


关于mysql数据插入的几种方式

最常见避免重复插入的4种方式

1、insert ignore into

即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是id索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据:

当插入已存在的主键id,此时将会忽略此次插入

INSERT IGNORE INTO demo.test (id, name)
VALUES ('1', 'zhangsan');

当插入的主键不同时,此时就会直接插入

INSERT IGNORE INTO demo.test (id, name)
VALUES ('2', 'zhangsan');

2、on duplicate key update

即插入数据时,如果数据存在,==则执行更新操作==,前提条件同上,也是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(id索引),如果存在,则执行update更新操作,如果不存在,则直接插入:

当插入已存在的主键id,此时将会进行更新操作

INSERT INTO demo.test (id, name)
VALUES ('2', 'zhangsan')
ON DUPLICATE KEY UPDATE
name='wangwu'

当插入不存在的主键id,此时将会直接进行插入操作

INSERT INTO demo.test (id, name)
VALUES ('3', 'zhangsan')
ON DUPLICATE KEY UPDATE
name='wangwu'

3、replace into

即插入数据时,如果数据存在,则删除再插入,前提条件同上,插入的数据字段需要设置主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(id索引),如果存在,则先删除旧数据,然后再插入,如果不存在,则直接插入:

当插入已存在的主键id,此时会先将旧的删除然后再进行插入

REPLACE INTO demo.test (id, name)
VALUES ('3', 'zhangsan1')

当插入不存在的主键id,此时会直接进行插入

REPLACE INTO demo.test (id, name)
VALUES ('4', 'zhangsan1')

4、 insert if not exists

insert into … select … where not exist ... ,这种方式适合于插入的数据字段没有设置主键或唯一索引,当插入一条数据时,首先判断MySQL数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略:

INSERT INTO demo.test (name)
SELECT 'ceshi' FROM DUAL
WHERE NOT EXISTS(SELECT name FROM demo.test WHERE name='wangwu1')

目前,就分享这4种MySQL处理重复数据的方式吧,前3种方式适合字段设置了主键或唯一索引,最后一种方式则没有此限制,只要你熟悉一下使用过程,很快就能掌握的!!!!


文章作者: Liu Yuan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Liu Yuan !
—— 评论区 ——
  目录