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数据插入的更多相关文章

  1. Sql Server的艺术(七) SQL 数据插入操作

    --用INSERT插入单行数据 在SQL中,可以通过INSERT...VALUES语句直接向数据库表中插入数据.可以整行,也可以部分列. 基本语法: INSERT INTO table_name [c ...

  2. 小议SQL数据插入

    --数据插入操作:INSERT INTO user_info(username,age) VALUES('ZHANGSAN',20);INSERT INTO user_info(username,ph ...

  3. SQL数据插入:将截断字符串或二进制数据

    将图片等较多数据保存到数据库的过程中会遇到: -- :: EL图片保存到数据库出错 条码:DE1132 异常原因:System.Data.SqlClient.SqlException: 将截断字符串或 ...

  4. SQL 数据插入、删除 大数据

    --测试表 CREATE TABLE [dbo].[Employee] ( [EmployeeNo] INT PRIMARY KEY, [EmployeeName] [nvarchar](50) NU ...

  5. SQL数据插入字符串时转义函数

    函数一: std::string CheckString(std::string& strSource) { std::string strOldValue = "'"; ...

  6. sql 根据指定条件获取一个字段批量获取数据插入另外一张表字段中+MD5加密

    /****** Object: StoredProcedure [dbo].[getSplitValue] Script Date: 03/13/2014 13:58:12 ******/ SET A ...

  7. SQL从入门到基础–03 SQLServer基础1(主键选择、数据插入、数据更新)

    一.SQL语句入门 1. SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法. 2. SQL语句中字符串用单引号. 3. SQL语句中,对于SQL关键字大小写不敏感,对于字符串值大小 ...

  8. 将DataTable 数据插入 SQL SERVER 数据库

    原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库: 一:使用sqlcommand.executenon ...

  9. SQL Server插入数据和删除数据

    首先在我的Student表中插入几条数据,由于我的表已经创建完成了,所以就没有创建表的 sql 语句了,不过可以看我的上一篇文章: http://www.cnblogs.com/Brambling/p ...

随机推荐

  1. 几行c#代码,轻松搞定一个女大学生

    几行c#代码,轻松搞定一个女大学生 的作业... 哈哈,标题党了哈,但是是真的,在外面敲代码,想赚点外快,接到了一个学生的期末考试,是一个天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找 ...

  2. 关于h5绘制canvas生成图片的注意点!

    1.第一个是关于移动端自适应的问题: 答:如果是最后只要一张canvas生成的图片,而不是要绘制的canvas的图形,则不需要考虑自适应,绘制canvas的时候的宽高,可以直接写成UI提供的图的大小, ...

  3. Kafka--消息队列

    说明:解耦指的是客户端A和客户端B不需要同步,两者之间的通信是异步的:消息队列是可以复制备份的,因此消息队列具有冗余性和可恢复性:所谓拓展性指的是,在大型分布式系统中,消息队列是分布在集群中的:队列是 ...

  4. Linux Redhat 7.6 操作系统 下载安装详解

    redhat 系统镜像分享 [百度网盘分享] (https://pan.baidu.com/s/1ALM6v1dAtPwmEt2tmyTghg ) 提取码:2i4o redhat 7.6版本安装详解 ...

  5. 【idea设置】去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告

  6. 其它综合-有关service、systemctl、chkconfig、init

    有关service.systemctl.chkconfig.init CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 daemon,原来管理系统启动和管理系统服务的相关 ...

  7. JS快速排序 希尔排序 归并排序 选择排序

    /* 快速排序 1.1 算法描述 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用.快速排序是一种既不浪费空间又可以快一 ...

  8. nfs 权限问题

    nfs-server 上面的共享文件的权限修改后 到nfs-client 上面挂载后的权限不能刷新的问题 修改/etc/idmap.conf Domain = local.domain.edu #打开 ...

  9. BZOJ3626[LNOI2014]LCA——树链剖分+线段树

    题目描述 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q次询问,每次询 ...

  10. MYSQL IN 出现的慢查询问题

    IN = https://blog.csdn.net/solmyr_biti/article/details/54293492 https://www.cnblogs.com/wxw16/p/6105 ...