MySQL中的批量修改、插入操作数据库

 更新时间:2023年09月18日 09:48:41   作者:Asurplus  
在平常的项目中,我们会需要批量操作数据库的时候,例如:批量修改,批量插入,那我们不应该使用 for 循环去操作数据库,这样会导致我们反复与数据库发生连接和断开连接,影响性能和增加操作时间,所以可以使用SQL 批量修改的方式去操作数据库,感兴趣的朋友一起学习下吧

在平常的项目中,我们会需要批量操作数据库的时候,例如:批量修改,批量插入,那我们不应该使用 for 循环去操作数据库,这样会导致我们反复与数据库发生连接和断开连接,影响性能和增加操作时间

所以我们可以使用编写 SQL 批量修改的方式去操作数据库

1、批量修改

UPDATE check_order_pl_detail
SET remarks =
CASE
        id
        WHEN 1 THEN '备注1'
        WHEN 2 THEN '备注2'
    END,
    retail_unit_price =
CASE
        id
        WHEN 1 THEN 100
        WHEN 2 THEN 200
    END
WHERE
    id IN ( 1, 2 )

我们去修改 check_order_pl_detail 表时,我们需要根据 id 去修改 remarks 和 retail_unit_price ,我们可以采用 CASE WHEN 的方式,去修改数据

2、批量插入

INSERT INTO user_info_backup ( `name`, age, sex, log_time) 
SELECT
    `name`,
    age,
    sex,
    DATE_SUB( curdate( ), INTERVAL 1 DAY ) AS log_time
FROM
    user_info

当我们在备份 user_info 表的数据时,我们需要将 user_info 的数据查询出来,在插入到 user_info_backup 表中

补充:

mysql 批量新增,修改

<strong>批量新增</strong>
<insert id="insertList">
  insert into sea_user (id, username,`time`)
  values
  <foreach collection="list" item="item" index="index" separator=",">
    (replace(uuid(),"-",""), #{item.username}, #{item.time})
  </foreach>
</insert>

注释

list  传过来的集合对象

item="item"  "item" 遍历的集合中的每个对象
---------------------------------------------------------------------------------------------------------
<strong>新增返回主键id (useGeneratedKeys="true" keyProperty="id")</strong>
<insert id="insert" parameterType="com.mmall.pojo.Shipping" useGeneratedKeys="true" keyProperty="id">
  insert into mmall_shipping (id, user_id, receiver_name, 
    receiver_phone, receiver_mobile, receiver_province, 
    receiver_city, receiver_district, receiver_address, 
    receiver_zip, create_time, update_time
    )
  values (#{id,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER}, #{receiverName,jdbcType=VARCHAR}, 
    #{receiverPhone,jdbcType=VARCHAR}, #{receiverMobile,jdbcType=VARCHAR}, #{receiverProvince,jdbcType=VARCHAR}, 
    #{receiverCity,jdbcType=VARCHAR}, #{receiverDistrict,jdbcType=VARCHAR}, #{receiverAddress,jdbcType=VARCHAR}, 
    #{receiverZip,jdbcType=VARCHAR}, now(), now()
    )
</insert>
---------------------------------------------------------------------------------------------------------
<strong>批量修改
list  - 传过来的数据集合,使用注解
goods_id 表中数据
goodsId 对应的实体类属性
</strong>
<update id="updateBatchStock">
  update
    goods
  set
    goods_stock =
    <foreach collection="list" item="item" index="index" separator=" " open="case goods_id" close="end">
        when #{item.goodsId} then goods_stock - #{item.quantity}
    </foreach>
    ,goods_sales_quantity =
    <foreach collection="list" item="item" index="index" separator=" " open="case goods_id" close="end">
        when #{item.goodsId} then goods_sales_quantity + #{item.quantity}
    </foreach>
    where goods_id in
    <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
        #{item.goodsId}
    </foreach>
</update>

到此这篇关于MySQL中的批量操作(修改,插入)的文章就介绍到这了,更多相关MySQL批量修改内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL:reading initial communication packet问题解决方法

    MySQL:reading initial communication packet问题解决方法

    网站访问出现如题错误,经过检查my.cnf,发现innodb_buffer_pool_size = 2048M 设置过大,调整为innodb_buffer_pool_size = 1024M即可,网上也有该问题的其他解决方法,但都不能解决我的问题
    2012-07-07
  • 忘记Mysql密码的解决办法小结

    忘记Mysql密码的解决办法小结

    最近老是忘记mysql密码。网上学习了四种解决办法,记录下来。分享给大家
    2014-07-07
  • MySQL查询缓存的小知识

    MySQL查询缓存的小知识

    这篇文章主要介绍了MySQL查询缓存的的相关资料,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-12-12
  • MySQL实现统计过去12个月每个月的数据信息

    MySQL实现统计过去12个月每个月的数据信息

    这篇文章主要介绍了MySQL实现统计过去12个月每个月的数据信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • MySQL如何将CSV文件快速导入MySQL中

    MySQL如何将CSV文件快速导入MySQL中

    有时候我们可能会把CSV中的数据导入到某个数据库的表中,比如做报表分析的时候,下面这篇文章主要给大家介绍了关于MySQL如何将CSV文件快速导入MySQL中的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • MySQL中utf8mb4排序规则示例

    MySQL中utf8mb4排序规则示例

    本文主要介绍了MySQL中utf8mb4排序规则,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • mysql 模糊查询 concat()的用法详解

    mysql 模糊查询 concat()的用法详解

    大家都知道concat()函数,是用来连接字符串,今天通过本文给大家介绍mysql 模糊查询 concat()及concat的用法,感兴趣的朋友跟随小编一起看看吧
    2023-02-02
  • 删除mysql数据库中的重复数据记录

    删除mysql数据库中的重复数据记录

    mysql中select distinct * from text不能显示不重复的记录,而是直接全部显示
    2008-06-06
  • mysql 5.7.17的最新安装教程图文详解

    mysql 5.7.17的最新安装教程图文详解

    mysql-5.7.17-winx64是现在最新版本的Mysql,这是免安装的,所以要进行些配置,下面通过本文给大家介绍mysql 5.7.17的最新安装教程图文详解,感兴趣的朋友一起学习吧
    2017-03-03
  • MySQL游标的介绍与使用

    MySQL游标的介绍与使用

    虽然我们也可以通过筛选条件WHERE和HAVING,或者是限定返回记录的关键字LIMIT返回一条记录,但是,却无法在结果集中像指针一样,向前定位一条记录、向后定位一条记录,或者是随意定位到某一条记录,并对记录的数据进行处理
    2022-12-12

最新评论