INTO 子句 (Transact-SQL)

更新日期: 2007 年 9 月 15 日

创建新表并将来自查询的结果行插入新表中。

主题链接图标Transact-SQL 语法约定

语法

[ INTO new_table ]

参数

  • new_table
    根据选择列表中的列和 WHERE 子句选择的行,指定要创建的新表名。 new_table 的格式通过对选择列表中的表达式进行取值来确定。 new_table 中的列按选择列表指定的顺序创建。 new_table 中的每列与选择列表中的相应表达式具有相同的名称、数据类型和值。

    当选择列表中包括计算列时,新表中的相应列不是计算列。 新列中的值是在执行 SELECT...INTO 时计算出的。

    包括 SELECT...INTO 在内的某些大容量操作的日志记录量取决于对数据库有效的恢复模式。 有关详细信息,请参阅恢复模式概述

    ms188029.note(zh-cn,SQL.90).gif注意:
    在 SQL Server 2000 之前的版本中,只有设置了 select into/bulkcopy,才允许使用 SELECT INTO 创建永久表。 在 SQL Server 2000 和更高版本中,select into/bulkcopy 数据库选项不再影响您是否可以使用 SELECT INTO 创建永久表。

备注

如果用户执行带 INTO 子句的 SELECT 语句,必须在目标数据库中具有 CREATE TABLE 权限。

即使源表已分区,也不能使用 SELECT INTO 创建已分区的表。 SELECT INTO 不使用源表的分区方案。 相反,新表是在默认文件组中创建的。 若要将行插入已分区的表中,必须首先创建已分区的表,然后使用 INSERT INTO…SELECT FROM 语句。

SELECT...INTO 不能与 COMPUTE 一起使用。

示例

以下示例通过从与各个雇员和地址相关的表中选择七列创建表 dbo.EmployeeAddresses

USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName, e.Title, a.AddressLine1, a.City, sp.Name AS [State/Province], a.PostalCode
INTO dbo.EmployeeAddresses
FROM Person.Contact AS c
JOIN HumanResources.Employee AS e ON e.ContactID = c.ContactID
JOIN HumanResources.EmployeeAddress AS ea ON ea.EmployeeID = e.EmployeeID
JOIN Person.Address AS a on a.AddressID = ea.AddressID
JOIN Person.StateProvince as sp ON sp.StateProvinceID = a.StateProvinceID;
GO

请参阅

参考

SELECT (Transact-SQL)
SELECT 示例 (Transact-SQL)

其他资源

使用 SELECT INTO 插入行

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2007 年 9 月 15 日

新增内容:
  • 在“备注”中新增了已分区表信息。
  • 添加了“示例”部分。