千家信息网

MySQL中如何使用插入和批量语句

发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇文章主要介绍了MySQL中如何使用插入和批量语句,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言最常见的方式就是为字段设置主键或
千家信息网最后更新 2025年11月15日MySQL中如何使用插入和批量语句

这篇文章主要介绍了MySQL中如何使用插入和批量语句,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

前言

最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下:

这里为了方便演示,我新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引(idx_username)

1.insert ignore into

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

INSERT IGNORE INTO user (username,sex,address) VALUES ('hanpang','boy','HongKong')

2.on duplicate key update

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

INSERT IGNORE INTO user (username,sex,address) VALUES ('hanpang','boy','HongKong')on duplicate key updateSEX='boy',address='HongKong'

3.replace into

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

REPLACE INTO user (username,sex,address) VALUES ('hanpang','boy','HongKong')

4.insert if not exists

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

INSERT  INTO user (username,sex,address) SELECT 'hanpang','boy','HongKong' FROM userWHERE NOT EXISTS (SELECT username FROM user WHERE username='hanpang')

5.批量插入数据

上述的插入语句,是可以使用批量插入语句,表数据结构:

CREATE TABLE example (    example_id INT NOT NULL,    name VARCHAR( 50 ) NOT NULL,    value VARCHAR( 50 ) NOT NULL,    other_value VARCHAR( 50 ) NOT NULL)

个人习惯使用这种批量操作方式,进行SQL语句拼接,但是当你的字符串太长(百万数据)的时候,需要你对mysql设置指令:

INSERT INTO exampleVALUES(100, 'Name 1', 'Value 1', 'Other 1'),(101, 'Name 2', 'Value 2', 'Other 2'),(102, 'Name 3', 'Value 3', 'Other 3'),(103, 'Name 4', 'Value 4', 'Other 4');

实际开发中,我们更加喜欢使用通过程序代码进行批量添加操作(使用事务提交,批量插入数据库),使用上述的方式在插入测试数据或者其他低要求时比较合适,速度确实快。

6.批量更新

(1)replace into 批量更新(记得要有主键或者索引)

INSERT INTO exampleVALUES(100, 'Name 1', 'Value 1', 'Other 1'),(101, 'Name 2', 'Value 2', 'Other 2'),(102, 'Name 3', 'Value 3', 'Other 3'),(103, 'Name 4', 'Value 4', 'Other 4');

(2)insert into ...on duplicate key update批量更新

使用INSERT的时候 有表T(id,A,B,C,D)

插入的时候希望通过A,B索引唯一记录 ,有重复的时候更新C,D

INSERT INTO T(A,B,C,D) VALUES (a,b,c,d) ON DUPLICATE KEY UPDATE C=C+1,D=d

(3)使用mysql 自带的语句构建批量更新

UPDATE yoiurtable        SET dingdan = CASE id                 WHEN 1 THEN 3                 WHEN 2 THEN 4                WHEN 3 THEN 5                 ENDWHERE id IN (1,2,3)

(4)创建临时表,先更新临时表,然后从临时表中update

create temporary table tmp(id int(4) primary key,dr varchar(50));insert into tmp values  (0,'gone'), (1,'xx'),...(m,'yy');update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;

感谢你能够认真阅读完这篇文章,希望小编分享的"MySQL中如何使用插入和批量语句"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

数据 索引 语句 更新 字段 数据库 测试 方式 时候 篇文章 前提 条件 检索 兴趣 同时 朋友 程序 处理 合适 特殊 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 九阴真经服务器互通 安装一台服务器多少 报考网络安全工程师有什么条件 软件开发方法学的组成 威服网络技术有限公司 伪装服务器 云南服务器机房厂家供应 吃鸡全服务器前五百怎么看 怎样做空岛服务器 sql数据库密码不语序为空 动态ip搭建服务器 南京新东方网络技术有限公司 服务器统一监控管理平台 铁路信息系统网络安全投入5% 浪潮软件开发人员待遇怎么样 针对数据库安全dbms提供 龙芯 服务器 格拉斯哥大学的网络安全排名 exp命令导出数据库 tp服务器管理密码是什么 深圳信息技术职院计算机网络技术 中学生网络安全案例视频 湘潭微信小程序软件开发 金蝶专业版数据库附加 旅行社产品销售与网络技术的 专科计算机网络技术如何 部署一台安全的php服务器 网络技术防范暴力恐怖活动 软件开发中怎样模拟报价单 天津本地软件开发市场报价
0