SQL数据插入
T-SQL中提供了多个将数据插入到表中的语句:insert values、insert select、insert exec、select into和Bulk insert;
1、 insert values
这是一种比较常用的插入数据方式,可以进行单条或者多条数据插入
首先创建一个表,然后进行数据插入操作
create table test(
id int not null identity(1,1) primary key,
name nvarchar(100)
)
单条数据插入
insert into test(name) values('test1')

多行数据插入
insert into test(name) values('test2'),('test3'),('test4')

以上两种方式都可以省略表名后面的字段(不推荐这种方式),如下:
insert into test values('test1')
insert into test values('test2'),('test3'),('test4')
多行数据插入被作为一个原子性操作处理,即输入到表中的数据如果任意一行失败,则该语句不会插入到表中。
对于增强values子句,还可以将其作为表值构造函数以标准方式构建一个派生表,如下:
select * from (values
('001','test1'),
('002','test2'),
('003','test3')
)as test(id,name)

2、 insert select
insert select 语句和insert values语句类似,不同的是values子句不同,在这可以指定一个select查询,例如将刚才的数据复制到另外一个表test1中,首先创建test1表,结构与test相同
create table test1(
id int not null primary key,
name nvarchar(100)
)
执行插入语句
insert into test1
select ID,name from test
插入test1表结果如下,完全将test表中数据复制到test1中

删除test1中数据
truncate table test1
该数据插入方式中还可以使用union all进行多行数据插入
insert into test1
select '1','test1' union all
select '2','test2' union all
select '','test3'
查询test1表结果如下:

3、 insert exec
使用insert exec语句可以将存储过程或者动态SQL批处理的结果集插入到目标表中。
创建测试存储过程
create proc proc_Test @name as nvarchar(100)
as
select * from test where name like @name+'%'
go
测试执行结果
exec proc_Test 'test'

删除test1数据
truncate table test1
执行插入语句
insert into test1(id,name)
exec proc_test 'test'
查询test1表中数据

4、 select into
select into语句是一个非标准的T-SQL语句,它使用查询的结果创建并填充目标表。
使用下列语句可以将test中数据复制到temp的临时表中,temp表的结构和数据是基于test表的,该语句会将(列名、类型、是否为空、identity)属性和数据复制到目标表中,但是索引、约束、触发器和权限不会复制,如果目标表中需要这些需要重新创建。
select ID,name
into #temp
from test
查询#temp表,数据如下:

5、bulk insert
使用bulk insert语句将来自文件的数据插入到现有的一个表中。在语句中指定表、源文件和选项。可以指定多个选项,包括数据类型、字段终止符、行终止符和其他的文件选项
修改test表结构:
alter table test add address nvarchar(100) ,age int
清空test表
truncate table test
编辑本地文件,将下列蓝色字体数据保存在txt文件中,在SQL语句中指定该文件地址即可。
1,tom,北京市海淀区,20
2,sam,北京市朝阳区,23
3,amy,上海市浦东区,27
4,张三,河北省唐山市,28
5,李四,北京市海淀区,31
执行语句
bulk insert dbo.test from 'C:\sqltest.txt'
with(
datafiletype='char',
fieldterminator=',',
rowterminator ='\n'
)
查询结果如下

SQL数据插入的更多相关文章
- Sql Server的艺术(七) SQL 数据插入操作
--用INSERT插入单行数据 在SQL中,可以通过INSERT...VALUES语句直接向数据库表中插入数据.可以整行,也可以部分列. 基本语法: INSERT INTO table_name [c ...
- 小议SQL数据插入
--数据插入操作:INSERT INTO user_info(username,age) VALUES('ZHANGSAN',20);INSERT INTO user_info(username,ph ...
- SQL数据插入:将截断字符串或二进制数据
将图片等较多数据保存到数据库的过程中会遇到: -- :: EL图片保存到数据库出错 条码:DE1132 异常原因:System.Data.SqlClient.SqlException: 将截断字符串或 ...
- SQL 数据插入、删除 大数据
--测试表 CREATE TABLE [dbo].[Employee] ( [EmployeeNo] INT PRIMARY KEY, [EmployeeName] [nvarchar](50) NU ...
- SQL数据插入字符串时转义函数
函数一: std::string CheckString(std::string& strSource) { std::string strOldValue = "'"; ...
- sql 根据指定条件获取一个字段批量获取数据插入另外一张表字段中+MD5加密
/****** Object: StoredProcedure [dbo].[getSplitValue] Script Date: 03/13/2014 13:58:12 ******/ SET A ...
- SQL从入门到基础–03 SQLServer基础1(主键选择、数据插入、数据更新)
一.SQL语句入门 1. SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法. 2. SQL语句中字符串用单引号. 3. SQL语句中,对于SQL关键字大小写不敏感,对于字符串值大小 ...
- 将DataTable 数据插入 SQL SERVER 数据库
原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库: 一:使用sqlcommand.executenon ...
- SQL Server插入数据和删除数据
首先在我的Student表中插入几条数据,由于我的表已经创建完成了,所以就没有创建表的 sql 语句了,不过可以看我的上一篇文章: http://www.cnblogs.com/Brambling/p ...
随机推荐
- 必须掌握的MySQL优化指南
当 MySQL 单表记录数过大时,增删改查性能都会急剧下降,本文会提供一些优化参考,大家可以参考以下步骤来优化. 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部 ...
- html2canvas截屏在H5微信移动端踩坑,ios和安卓均可显示
1.最近在做移动端开发,框架是vue,一产品需求是,后台返回数据,通过qrcode.js(代码比较简单,百度上已经很多了)生成二维码,然后通过html2canvas,将html元素转化为canvas, ...
- WPF中利用控件的DataContext属性为多个TextBox绑定数据
工作上需要从给定的接口获取数据,然后显示在界面的编辑框中,以往肯定会一个一个的去赋值,但这样太麻烦而且效率很低,不利于维护,于是想到了数据绑定这一方法,数据绑定主要利用INotifyPropertyC ...
- 《Effective C++》实现:条款26-条款31
条款26:尽可能延后变量定义式的出现时间 C++推荐在使用对象前才定义对象(调用构造函数赋初值) 只在循环中使用的变量定义在循环内部(除非"赋值"成本低于"构造+析构&q ...
- js实现在光标的位置 添加内容
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Intel 11代全新核显出现了!好强 好乱
Intel最近为其10亿级用户的核芯显卡真是操醉了心,一方面进一步公布了第11代核显的架构细节,另一方面升级驱动程序带来了全新的控制中心. 而在对新驱动进行了一番挖掘之后,赫然发现Intel已经将第1 ...
- Zabbix配置邮件监控
zabbix服务端配置 安装软件并配置 使用第三方邮件实现报警 1. 安装软件 $ yum -y install mailx 2. 配置发送邮件账号密码和服务器 $ vim /etc/mail.rc ...
- CSS概念,引入,选择器
概念 层叠样式表,定义如何显示HTML元素. 使用方式 行内样式 不推荐使用此方式 结构 和 样式的 杂糅会影响后期的维护 <p style="color: red"> ...
- python 高阶函数之 reduce
1.正常写法 >>> from functools import reduce >>> def fn(x, y): ... return x * 10 + y .. ...
- 学习python第二天
编程语言分为哪几种? 1. 机器语言:是通过直接编写二进制指令对计算机下达指令的编程方式 -- 0000,0000,00000000001:加载 暂存区A 存储器地址1 2. 汇编语言:是通过编写二进 ...