数据修改之Insert into
以集合而不是行的方式思考。
一、数据插入
各种形式的insert 命令
insert / values | 插入一行数据,通常用于插入用户界面中的数据 |
insert / select | 插入一个结果集,通常用于操作数据集 |
insert / exec | 插入存储过程的执行结果,用于复杂的数据操作 |
insert / default | 创建一个由默认值组成的新行,用于填充预留行。 |
select / into | 使用Select 语句的结果集创建一个新表 |
1、插入一行数据
基本语法:
insert [into] 表名 [ (列名1,列名2,列名3...) ] values(值列表...)
注:a、并非一定要列出表中的每个列,但列出某个列后,必须在insert命令中为它
提供值
b、表名后省略列名,要为除标识列的其他列提供值,且顺序一致
c、可显式插入默认值。default
2、插入Select语句的结果集
基本语法:
insert [into] 表名 [ (列名1,列名2,列名3...) ] select columns
from data source [where conditions]
注:a、select可从任何数据源中获取数据,并改造
b、同理,值和列的顺序必须相同
3、插入存储过程返回的结果集
获取存储过程返回的数据,并将其插入到表中。
基本语法:
insert [into] 表名 [ (列名1,列名2,列名3...) ] exec 存储过程
参数列表
注:a、存储过程可能返回多个结果集,insert命令将试图插入每个结果集中的数
据,因此,必须保证每个结果集的列顺序与插入列的顺序一致。
b、insert / exec 和 select / into 都不能用于将数据插入到表变量中
4、创建由默认值组成的行
insert [into] 表名 [ (列名1,列名2,列名3...) ] default values
注:这是的default values是关键字。
5、插入数据时创建表
在Select语句中使用into选项将创建一个新表来包含Select语句的结果集。
基本语法:
Select clomuns into newtable from datasource [ where conditons]
注:a、若Select语句没有从表中检索到行,Select / into将创建一个只包含数据架构
的新表
b、若Select语句对列进行了重新排列或使用了Cast()函数等,新表将使用修
改后的数据架构来存储数据。
c、与联合查询结合使用时,Select / into能够垂直地合并多个表中的数据。
(into 必须放在第一个Select语句中)
d、Select / into,非常适用于对表进行逆规范化。