各数据库的批量Update操作

 一、前言
  MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了。本篇仅记录批量update操作的sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了。
  注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚。
  二、MSSQL的SQL语句
  WITH R AS(
  SELECT 'John' as name, 18 as age, 42 as id
  UNION ALL
  SELECT 'Mary' as name, 20 as age, 43 as id
  UNION ALL
  SELECT 'Kite' as name, 21 as age, 44 as id
  )
  UPDATE TStudent SET name = R.name, age = R.age
  FROM R WHERE R.id = TStudent.Id
  三、MSSQL、ORACLE和MySQL的SQL语句
  UPDATE TStudent SET Name = R.name, Age = R.age
  from (
  SELECT 'Mary' as name, 12 as age, 42 as id
  union all
  select 'John' as name , 16 as age, 43 as id
  ) as r
  where ID = R.id
  四、SQLITE的SQL语句
  当条更新:
  REPLACE INTO TStudent(Name, Age, ID)
  VALUES('Mary', 12, 42)
  批量更新:
  REPLACE INTO TStudent(Name, Age, ID)
  SELECT * FROM (
  select 'Mary' as a, 12 as b, 42 as c
  union all
  select 'John' as a, 14 as b, 43 as b
  ) AS R
  说明:REPLACE INTO会根据主键值,决定执行INSERT操作还是UPDATE操作。
  五、总结
  本篇突出MyBatis作为半自动ORM框架的好处了,全手动操控SQL语句怎一个爽字了得。但对码农的SQL知识要求也相对增加了不少,倘若针对项目要求再将这些进行二次封装那会轻松比少。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-15 09:19:17

各数据库的批量Update操作的相关文章

MyBatis魔法堂:各数据库的批量Update操作

一.前言     MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了.本篇仅记录批量update操作的sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了. 注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚.   二.MSSQL的SQL语句 WITH R AS( SELECT 'John' as name, 18 as age, 42 as id UNION ALL SELECT 'Mary' as name, 20 as

ADO.NET下的SqlBulkCopy类执行数据库间批量复制操作

  很多时侯,我们需要在数据库间复制大量数据,如SQLSERVER提供的BCP.EXE命令行工具,如ADO.NET下   SqlBulkCopy类提供了一个高性能的方法WriteToServer来复制数据.该方法可以接受一个DataRow对像数据.一   个实现IDbDataReader接口的对像和一个DataTable,或者接受一个DataTable对像和一个DataRowState枚举值,   以实现从大多数位置中获取数据.                      /// <summary

MyBatis学习 之 七、mybatis各种数据库的批量修改

    MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了.本篇仅记录批量update操作的sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了. 注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚.   二.MSSQL的SQL语句 WITH R AS( SELECT 'John' as name, 18 as age, 42 as id UNION ALL SELECT 'Mary' as name, 20 as age,

mybatis-Mybatis操作Oracle数据库:批量修改成功后返回的值是-1?

问题描述 Mybatis操作Oracle数据库:批量修改成功后返回的值是-1? Mapper.xml <update id="updateByMultiConditions" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="begin"

ado操作数据库 vc-m_pRecordset-&amp;amp;gt;Update();异常应该如何处理

问题描述 m_pRecordset->Update();异常应该如何处理 今天纠结一个问题半天了, 还是没有找到解决办法,特来向各位求助, 希望个为大神帮忙看看. 问题是: 我建立的数据库中有个表中的数据有限制条件. 存的是图片的路劲,限制条件为路径不能一样. 最后用vc链接数据库,采用ado操作数据库. 代码如下: try{ m_pRecordset_picpath->AddNew(); m_pRecordset_picpath->PutCollect("path"

数据库优化和SQL操作的相关题目

SQL操作 1.有一个数据库表peope,表有字段name,age,address三个属性(注:没有主键).现在如果表中有重复的数据,请删去重复只留下其中的一条.重复的定义就是两条记录的name,age,address值都一样.关键是怎么把重复的数据过滤掉,后来我考虑的做法是这样的: 1 2 3 4 5 6 7 select * from people group by name,age,address having COUNT(DISTINCT name)=1   这样就可以把重复的数据过滤掉

SQL SERVER:不同服务器数据库之间的数据操作

  不同服务器数据库之间的数据操作 --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时

MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解

本篇文章是对MySQL数据库INSERT.UPDATE.DELETE以及REPLACE语句的用法进行了详细的分析介绍,需要的朋友参考下   MySQL数据库insert和update语句引:用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句.言外之意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INSERT.UPDATE以及DELETE. 用 于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的S

ADO.NET批量更新操作

  批量更新操作 .在上一个版本的ADO.NET当中,SqlDataAdapterde的Update方法将会为 DataSet当中的每一行调用一次更新操作 .在ADO.NET2.0中,您可以设置UpdateBatchSize属性,在单步中执行多个更新 .这样,可以提高数据更新的效率 .UpdataBatchSize的默认值为1,使得默认的更新行为与以前版本的ADO.NET一致. 代码经验 public Form1() { conn = new SqlConnection(Configuratio