mysql 批量添加更新_MySql快速插入以及批量更新

2023-11-19

MySql快速插入以及批量更新

插入:

MySql提供了可以一次插入多条数据的用法:

[sql]

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(10,11,12)...;

在程序中可以通过循环,添加Values对应的列表,最后使用一次executeUpdate完成插入操作。但是Mysql语句并不是越长越好,MYsql语句长度有限制,可以查看mysql的配置文件my.in中max_allowed_packet属性,并进行相应设置。

更新:

Mysql中没有提供像Insert一样一次更新多条记录,需要逐条语句拼接。

[sql]

update weibo set userName = 'xyw' where id = '22';update weibo set userID = '143' where id = '35';

你可以使用addBatch语句,将拼接起来的SQL语句进行一次性处理,但是效率并不高。

还需要处理resultset的释放问题,否则mysql会报错:"Commands out of sync; you can't run this command now"

针对update语句,虽然并没有resultset返回,但仍然需要释放。而由于未知原因(可能是sql语句太长?),释放resultset非常耗时,最终算下来得不偿失。

针对以上的不足,可以使用另一种方法执行批量更新。

[sql]

INSERT INTO tbl_name [col_name1, col_name2,...)] VALUES(col_value1,col_value2,...), (col_value1,col_value2,...)ON DUPLICATE KEY UPDATE userName=VALUES(userName)

使用这种方法必须满足条件:col_name1, col_name2,...中必须有主键或者唯一键。

userName是要更新的列。

如果想一次更新多列,可以在userName=VALUES(userName)后面继续添加,例如:

[sql]

INSERT INTO tbl_name [col_name1, col_name2,...)] VALUES(col_value1,col_value2,...), (col_value1,col_value2,...)ON DUPLICATE KEY UPDATE userName=VALUES(userName), userID = VALUES(userID)

这样就可以同时更新userName和userID两个字段。

它的实现原理是,首先Mysql根据表名后面列出的主键,查找表(因为是主键,所以在表中唯一存在)。如果存在该行数据,则按照最后的col_name = values(col_name)列表对相应的字段,按照values列表中给出的值进行更新。建议:表名后面的字段列表,除了主键之外,列出来的最好都作为更新的对象,即在语句最后都要有相应的col_name = values(col_name),否则,你在表名后罗列出来字段,在values中赋值了,但是不是更新的对象,显然是浪费。

如果不存在该行数据,则进行插入操作,没有作为更新对象的列按照默认值填充(前提是Mysql运行在非严格模式下。如果在严格模式下,没列都需要有默认值,否则运行出错)。

注意:

主键可以作为更新的对象 ,但是只是在表中不存在该记录时起作用,即执行了插入操作,如果表中已经存在了该主键对应的行数据,下次更新时不会再插入该行,而是执行除了主键之外的其他列的更新操作。所以最好不要将主键设置为更新的对象。

实例:

[sql]

INSERT INTO keywordtable(id, keyword, userName, userID) VALUES(1, '你好', 'Eliot', 22), (2, 'hello', 'Jhon', 23),

(3, '嘻嘻', 'Jim', 24) ON DUPLICATE KEY UPDATE keyword=VALUES(keyword), userName=VALUES(userName),userID=VALUES(userID);

除了id外,字段有keyword, userName, userID,他们是要更新的字段。

转自:https://www.2cto.com/database/201304/202410.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 批量添加更新_MySql快速插入以及批量更新 的相关文章

  • JavaScript经典案例之按下拖拽、跟随鼠标移动

    div div
  • VMware虚拟机走主机代理上网

    1 打开虚拟机系统的网络设置 2 设置代理为手动 并填写代理ip和端口 这里我的代理软件用的是Socket协议 故只填 Socket 主机一栏 3 代理 ip 和端口填写 ip地址 ip地址可以在主机系统的命令行窗口输入ipconfig查询
  • js向服务器发送信息,Angularjs向服务器发送请求

    您需要将id属性分配给对象 item id 4 让我们假设您有一个文本框 并且用户想要通过在其中插入名称来保存新项目 然后单击提交 让我们假设您正在使用MongoDB项目集合 为简单起见 它们只有id字段 这是你应该做些什么来让它变得容易
  • java如何检测连接池连接情况,如何监控数据库连接池(JDBC Connection Pool)

    本文中 我将介绍利用Dynatrace AppMon监控JDBC Connection Pool的一些技巧 以便快速诊断JDBC Connection Pool是否存在泄露和监控JDBC Connection Pool的使用率 通过监控获取
  • 攻防世界 Web simple_php

    攻防世界 Web simple php 1 分析源代码 2 得到flag 1 分析源代码 a 和 b 都是通过GOT传入 第一个if可以获取flag1 但是要求a0 atrue 但是如果
  • x-studio教程之 - Unity Lua调试 ulua/tolua slua调试教程

    UnityLua DebugTutorial 请查看最新官方文档 https docs x studio net zh CN latest lua dbg 01 unity3d
  • Grafana安装和实现可视化和告警

    1 Grafana安装和实现可视化和告警 Prometheus UI 提供了快速验证 PromQL 以及临时可视化支持的能力 但其可视化能力却比较弱 一般情况下 我们都用 Grafana 来实现对 Prometheus 的可视化实现 1 1
  • 软件测试工程师自我介绍范文_软件测试面试指导之自我介绍

    面试自我介绍虽然人人都准备 但是做到让人印象深刻可不容易啊 本篇就具体来聊聊人人都要经历的面试 怎么做自我介绍 才能让面试官眼前一亮 面试是什么 它是个机会 让面试官更进一步确认你是他们需要的人 你进一步展现你的交际沟通能力 在面试中 自我
  • 7G空间安装Linux,双系统使用Linux引导

    今天在装linux的window双系统时 出现在无法使用linux引导的问题 开机总是自动进windows 照理来说我先装的window 后装的linux 应该是开机进grub引导才对 在主板的boot里根本没有linux项 后来用Easy
  • DAMA-DMBOK2重点知识整理CDGA/CDGP——第2章 数据处理伦理

    目录 一 分值分布 二 重点知识梳理 1 语境关系图 2 引言 3 业务驱动因素 4 基本概念 一 分值分布 CDGA 2分 2单选 CDGP 0分 不考 二 重点知识梳理 1 引言 预警关系图 数据处理伦理定义 如何以符合道德准则及社会责
  • module load/unload 命令 (Envrionment modules工具)

    Envrionment modules工具用来快速的设置和修改用户编译运行环境 Envrionment modules通过加载和卸载modulefile文件可直接改变用户的环境变量 用户不需要修改 bashrc 从而避免误操作 使用modu
  • Unity里清除Console控制台Log的函数

    Log输出部分转发来自 http blog sina com cn s blog 13c4bf4b40102wz0r html 在控制台输出中 是开发者常用到的一种函数 通过Debug类来实现 打印字符串 Debug Log log 如果有
  • PyTorch深度学习框架(一)

    文章目录 pytorch安装步骤 pytorch基本使用方法 view操作 改变矩阵维度 格式转化 numpy lt gt torch 自动求导机制 例子实现 线性回归模型 常见的tensor格式 pytorch安装步骤 pip3 inst
  • 基础算法题——画树(卡特兰数)

    卡特兰数简介 卡特兰数又称卡塔兰数 英文名Catalan number 是组合数学中一个常出现在各种计数问题中出现的数列 卡特兰数前几项为 1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012
  • Excel制作导入模板,多级联动下拉框(一整列的设置),修改一级下拉框内容,自动清空二级内容

    目录 效果展示 一 数据准备 二 模板制作 原因1 为空 原因二 名称管理器数据有误 三 修改一级下拉框内容 自动清空二级内容 1 效果演示 2 实际操作 效果展示 一 数据准备 1 新建一张表 在sheet2中放入数据 如图所示 2 点击
  • 提取任务相关成分的TRCA算法

    提取任务相关成分的TRCA算法 1 TRCA算法简介 2 TRCA算法原理与推导 3 Ensemble TRCA算法原理简介 1 TRCA算法简介 虽然基于CCA的方法在识别SSVEP信号方面具有不错的表现 但这类方法的性能仍旧易受到自发脑
  • 阿里云oss上传和下载

    这段为上传的代码 账号之类前往注册 可以根据个人情况进行修改 上传文件 param endPoint 路径 param bucketName 桶名称 param fileName 文件绝对路径和名称 param ossPath 上传存储路径
  • 线程池的使用实例

    线程池的使用实例 number 创建线程个数 创建线程池 ExecutorService cachedThreadPool Executors newCachedThreadPool 每次线程执行完毕 计数 1 当计数减到 0 之后 才能解
  • 红帽7.9部署telnet服务

    升级ssh 为预防万一提前配置telnet服务 安装软件包 yum install telnet server yum install xinetd xinetd加入开机自启 systemctl enable xinetd service

随机推荐

  • DB2分组查询之row_number() over(partition by order by )说明

    作用 数据库根据某几个字段去除重复记录 并进行排序 语法 ROW NUMBER OVER PARTITION BY COL1 ORDER BY COL2 功能 表示根据COL1分组 在分组内部根据 COL2排序 而这个值就表示每组内部排序后
  • 图像的打开、修改、显示和保存示例(>OpenCV 2.0)

    代码如下 include
  • Vue项目中使用Sass变量自定义ag-grid表格主题样式

    1 在Vue项目中新建一个样式文件 src assets styles table scss 引入ag grid默认的样式文件 table scss ag icons path node modules ag grid community
  • 蓝桥杯每日一题2023.9.16

    蓝桥杯2022年第十三届省赛真题 X进制减法 C语言网 dotcpp com 题目描述 进制规定了数字在数位上逢几进一 X 进制是一种很神奇的进制 因为其每一数位的进制并不固定 例如说某种 X 进制数 最低数位为二进制 第二数位为十进制 第
  • 【机器学习】【逻辑回归】最大似然估计的推导和求解步骤和梯度上升算法求解

    伯努利分布 如果随机变量X 0 1 并且相应的概率满足 P X 1 p 0
  • halfShader 模型切割

    Shader Unlit halfShader Properties Diffuse Diffuse Color 1 1 1 1 MainTex Texture 2D white StartCutoff StartCutoff Range
  • Kafka 架构及原理分析

    Kafka 架构及原理分析 文章目录 Kafka 架构及原理分析 简介 使用场景 架构 Broker Topic 副本机制 存储 消费分组 消费编号 数据多写支持 基于 binlog 实现主从复制 Kafka 的进阶功能 消息幂等性 事务
  • (五)数据清理之stata的使用----------变量进行具体处理的命令

    br 浏览文件所存储的内容 set obs n 具体样本数量 该命令会自动帮你生成n个样本 list 显示样本的内容 使用方法为 list in 5 显示第5个样本的内容 list in 1 10 表示至的关系 显示1到至10的样本内容 l
  • ldap 初始化配置

    dn cn config objectClass olcGlobal cn config olcArgsFile var run openldap slapd args olcPidFile var run openldap slapd p
  • 数学建模之BP神经网络

    1 BP网络基本数学原理 BP网络是一种多层前馈神经网络 它的名字源于在网络训练中 调整网络权值的训练算法是反向传播算法 即BP学习算法 BP网络是一种具有三层或者三层以上神经元的神经网络 包括输入层 隐含层和输出层 上下层之间实现全连接
  • Vuetify笔记(6):v-form表单及校验

    在表单验证方面 Vuetify拥有集成了众多的功能 想要使用第三方验证插件 您可以开箱即用Vee validate和Vuelidate 1 v form表单 1 1 v form的属性和方法 v form表单的常用属性 1 lazy val
  • 什么是视图?普通视图和物化视图什么区别?看这一篇就明白了

    目 录 普通视图 如何创建普通视图 物化视图 增量刷新是如何判断哪些记录被改动的 物化视图创建案例 普通视图 视图可以理解为一张表或多张表的预计算 这些表称为基表 它可以将所需要查询的结果封装成一张虚拟表 基于它创建时指定的查询语句返回的结
  • U-Boot顶层Makefile详解

    文章目录 一 U Boot工程目录分析 1 打包编译好的uboot 2 目录介绍 1 arch 2 board 3 configs 4 Makefile 5 config 6 README 二 VSCode工程创建 1 新建工程 2 屏蔽不
  • 【docker】文档 [不断补充中...]

    全栈技术分享 文档API化 简单易懂 快速入门 动手党福音 跨界佬福利 直接搞技术 不背八股文 觉得对你有帮助的话点个赞吧 感兴趣的加关注 收藏书签方便随时查阅 同文档会不定期更新补充 有问题欢迎留言讨论 虚拟化 一种资源管理技术 硬件资源
  • 忍3服务器维护奖励,7月3日服务器维护公告

    亲爱的忍村学员 感谢大家对 忍者村大战2 的支持 为给大家带来更好的游戏体验 我们已于7月3日7 00 10 00进行全区停机版本更新 注 请勿擅自修改或替换客户端图片文件 会导致您的游戏崩溃或更新版本失败 如出现以上情况请卸载本地的客户端
  • mysql服务器搭建方法_windows下搭建MySQL服务器步骤详解

    Mysql是一个数据库系统 它包括数据库服务器 并且有一个数据库管理系统对数据库服务器进行管理 同时还包括有一个数据库客户端 用于与用户交互 从官方网站下载Mysql数据库系统的安装包程序 http www mysql com downlo
  • 怎样将好多个字符串组装成一个数组

    最近在写一个项目 在这个写的途中 发现了一个问题 就是不会将字符串组装成数组 然后去问了学长才知道 于是赶紧过来做个笔记 首先 我们需要先创建一个存储字符串的数组 创建数组 String hids new String hrs size 然
  • 不懂优雅停机,搞挂了线上服务,咋办?

    程序员的成长之路 互联网 程序员 技术 资料共享 关注 阅读本文大概需要 7 分钟 来自 陈树义 树哥聊编程 公司项目是用 consul 进行注册的 在发布微服务的时候 总是会导致调用方出现一定几率的调用失败 一开始百思不得其解 后来咨询了
  • shell编程快速入门(二)

    echo命令 输出指定的字符串或者变量 参数 n 不要在最后自动换行 e 激活转义字符 若字符串中出现以下字符 则特别加以处理 而不会将它当成一般文件输出 a 发出警告声 b 删除前一个字符 c 不产生进一步输出 c 后面的字符不会输出 f
  • mysql 批量添加更新_MySql快速插入以及批量更新

    MySql快速插入以及批量更新 插入 MySql提供了可以一次插入多条数据的用法 sql INSERT INTO tbl name a b c VALUES 1 2 3 4 5 6 7 8 9 10 11 12 在程序中可以通过循环 添加V