批量插入

表结构一样或类似

如果两张表的结构一样,例如一个表的结构和另一个表的结构一样,只是其中一张是临时表,而另一张表是存储数据的表,我们需要进行一次表的迁移的话,我们可以这样。 
insert into tb1 需要的列名 select 按照前面写上需要的列名 from tb2

insert into tb1 * select * from tb2

或者

insert into tb1 id,name,address select id,name,address from tb2

普通的批量插入

如果对sql语句不熟悉,或者是持久层的框架,大部分是这么写的

INSERT INTO tb_test(ID,NAME) VALUES(1,'zhangsan');

INSERT INTO tb_test(ID,NAME) VALUES(2,'lisi');

INSERT INTO tb_test(ID,NAME) VALUES(3,'wangwu');

但是按照这种做法,我尝试了一下,一次插入2000条数据,大概需要2分钟,但是如果我们用union all,如下:

INSERT INTO tb_test(ID,NAME)

SELECT 4,'zhangsan'

UNION ALL

SELECT 5,'lisi'

UNION ALL

SELECT 6,'wangwu' ;

同样是2000条数据,union all 方法是12秒。第二种方法是先将我们要插入的数据总结成一张表,然后进行表插入,这样的效果明显是比一个一个的插入快的。

批量更新

我们知道我们跟新一般的跟着条件的,所以例如我们更新一个实体集合的话,我们也是一个一个的更新,同样,如果我们程序中利用for循环来批量更细的话,我们就得重复着,打开数据库,更新,关闭数据库,而且我们的大部分时间都是消耗在打开数据库,关闭数据库上边了,而且批量更新通常需要依据条件来判断更新哪条数据,但是一个sql中只能有一个where,所以union all显然是不行的。 
但是我在以前的博客写过case when的写法,大家可以向一下,where就好像我们的if(条件)的“条件”,而他就好像我们的case 的when一样,所以我们可以用case when 来实现多“where”,这样的话就能实现多条记录更新的问题。代码如下:update tb_test SET name = 'zhangsan' case id

when '1' then 'yi'

when '2' then 'er'

when '3' then 'san'

end,

address='zhongguo' case sex

when '女' then 'femail'

when '男' then 'mail'

end

where *****

上边的语句就是当人们的名称是zhangsan的时候就批量更细id为汉语拼音,当人们的居住地址的时候就把他们的性别写成英文。

批量删除

在这里主要介绍下Sql批量插入的用法,让我们先看下批量删除一般如何来做。
1.批量删除很简单,大家可能都用过:


DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68) --sql2005下运行通过

当用户在界面上不连续的选择多项进行删除时,该语句比循环调用多次删除或多条delete语句中间加分号一次调用等方法都高效的多。

最新文章

  1. mono for android学习过程系列教程(4)
  2. 关于sharedPreferences的使用
  3. ajax实现文件上传
  4. vmdk虚拟机转换为OVF模板,导入esxi
  5. [0.1]Plan of kidsearch
  6. Nginx+Tomcat+Memcached实现tomcat集群和session共享
  7. 利用pscp命令实现linux与windows文件互传
  8. Python自然语言处理学习笔记之评价(evaluationd)
  9. span表情输入框 --- Author: rose && lvyerose@163.com
  10. IntelliJ IDEA使用心得之插件篇
  11. [Codeforces]762F - Tree nesting
  12. springboot中配置过滤器以及可能出现的问题
  13. raid1 raid2 raid5 raid6 raid10的优缺点和做各自raid需要几块硬盘
  14. 花神的数论题(这题...哎。数位dp咋就这么 not naive 呢)
  15. PHP03
  16. windows基于vs2017的opencv安装
  17. 18 Issues in Current Deep Reinforcement Learning from ZhiHu
  18. 每天CSS学习之text-shadow
  19. 使用java5的注解和Sping/AspectJ的AOP 来实现Memcached的缓存
  20. 将textarea实现自适应高度及IE下滚动条不出现的bug

热门文章

  1. 多列转1列 SqlServer 实现oracle10g的 wmsys.wm_concat()--for xml path('')
  2. Docker 清理命令汇总
  3. 内表转WORD
  4. constrained属性
  5. centreon公司推出的check plugin pack
  6. UESTC 1246 拆x3
  7. cocosBuilder生成cbbi文件,绑定到cocos2d-x
  8. vsftpd 启动 vsftpd:500 OOPS: bad bool value in config file for: guest_enable
  9. 模拟停车POJ(3505)
  10. How To Secure Nginx with Let's Encrypt on Ubuntu 14.04