sqlserver数据批量插入

本文介绍了SQLServer中批量插入数据的方法,强调了批量插入的语法,并详细讲解了临时表的使用,包括存储位置、特点、本地临时表和全局临时表的区别。临时表在优化复杂查询和提高效率方面起到重要作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

批量插入数据

  • 这个实际是用一张表的字段更新另一张表的字段,而且是可以批量插入的
insert into Reader(readerName) 
select top 100 tabcolname from tabname
  • 这是比较常用的批量插入数据的语法,mysql也是这样的,但是好像oracle不是这样的
insert into Reader(readerName) 
values('读取7'),('读取8'),('读取9')

将查询结果插入到另一个表

  • 这里的另一个表不存在的情况就使用如下的sql,这个语句会自动创建表格
select * into 目标表 fromwhere ...
  • 表已经存在的话直接使用上面的批量插入的语句就可以,不指定字段的话就是这样的,这里的源表和目标表的表结构需要一致
insert into 目的表 select * fromwhere 条件

sqlserver中的临时表

1、临时表的存储位置和特点

存储位置

在这里插入图片描述

临时表特点
  • 本地临时表就是用户在创建表的时候添加了#前缀的表,是和创建临时表的数据库连接绑定的,只有该数据库连接有临时表的访问权限,其它连接不能访问该表
  • 不同的数据库连接中,可以创建名字相同的临时表,这些表之间不会有相互影响,sqlserver自有一套机制确保他们的独立性
  • 真正的临时表利用了数据库临时表空间,由数据库系统自动进行维护,因此节省了表空间;并且由于临时表空间一般利用虚拟内存,大大减少了硬盘的I/O次数,因此也提高了系统效率
  • 临时表在事务完毕或会话完毕数据自动清空,不必记得用完后删除数据

个人经验:我一次在sybase 中使用多重嵌套的子查询进行数据查询的时候,速度奇慢务必,中间创建了一个临时表进行过渡之后,速度有了质的提升,所以在sql优化的时候创建合适的临时表也是一个不错的选择

1、本地临时表#

  • 本地临时表的名称以单个数字符号 #打头
  • 仅对当前的用户连接(也就是创建本地临时表的connection)是可见的
  • 当用户从 SQL Server 实例断开连接时被删除
  • 临时表的创建和使用和一般的表格基本是相同,这里不赘述
  • 特别需要注意的是:当使用 SSMS 来连接 sqlserver 进行操作的时候,仅仅是SSMS里面点击了断开连接,临时表并不会被删除,必须是断开连接并且关闭 SSMS 之后临时表才会被删除,这里只能理解为 SSMS所谓的断开连接并不是真正断开了吧

2、全局临时表##

  • 全局临时表的名称以两个数字符号 ##打头,创建后对任何数据库连接都是可见的,当所有引用该表的数据库连接从 SQL Server 断开时被删除
  • 实际使用的过程中,我在一个连接里面创建了一个全局的临时表,当前的连接断开之后,其他的连接里面就无法查询到这个表格了,这样的原因在于虽然还存在其他的数据库链接但是这些连接并没有对改全局的临时表进行引用,所以上文说的是当所有引用该表的数据库连接从 SQL Server 断开时被删除,这一点很重要啊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值