我们工作中用的最多的当属DQL和DML语句,DDL语句我们基本上可以通过SSMS的图形界面来完成,而且使用频率完全没有另外两个多,DQL是个比较大的概念,需要花费多个篇幅说明。所以我们首先看看DML当中的语句该如何使用。常常听人说到所谓的“增删改查”,这个篇章的主角就是增,即insert。
T-SQL提供了多个将数据插入到表中的语句:INSERT VALUES,INSERT SELECT,INSERT EXEC,SELECT INTO,BULK INSERT。
INSERT VALUES
这个算是最常用的语句了。语法如下:
insert into dbo.tbname(list1,list2,list3) values(val1,val2,val3)[,(val4,val5,val6)...]
INSERT INTO
语法:
INSERT INTO dbo.tbname(list1,list2,list3) select val1,val2,val3 from dbo.srctb where condition;
INSERT EXEC
使用INSERT EXEC语句可以将存储过程或动态SQL批处理返回的结果集插入到目标表中
INSERT INTO dbo.tbname(list1,list2,list3) EXEC dbo.procName @var=val
SELECT INTO
select into是一个非标准的T-SQL语句,它使用查询的结果集创建并填充目标表。但是源表的约束、索引、触发器、权限不会一起复制过去。
如果数据库的恢复模式未设置成“完整”,SELECT INTO操作会以最小日志记录模式执行,意味着相对于完整日志记录这是一个非常快速的操作。
语法:
SELECT var1,var2,var3 into dbo.tbname from dbo.srctb where conditioin
BULK INSERT
可以使用bulk insert语句将来自文件的数据插入到一个现有表中。在语句中指定目标表,源文件,选项(数据文件类型,字段终止符,行终止符,其它所有文件选项)
示例:
BULK INSERT dbo.tbname from 'c:\temp\orders.txt'
WITH
(
DATAFILETYPE='char',
FILEDTERMINATOR=',',
ROWTERMINATOR='\n'
);