SQL Server SELECT INTO 语句对于将数据插入表中很有用,但在此之前,它会首先创建一个新表。然后,此 SELECT INTO 语句会将 Select 语句选择的行插入到该新表中。
如果我们尚未创建目标表,那么 Select Into 语句可以方便地将数据插入到目标表中。如果已存在表,请使用 Insert Into。
SQL Server Select Into 语法
SELECT INTO 语句的语法如下所示
SELECT [Column Names] INTO [New_Table] FROM Source WHERE Condition --This is optional
下面的截图显示,我们的 tutorials 数据库中没有 Department 或 Employee 表。因此,我们的任务是使用 SELECT INTO 语句从 TEST 数据库中获取该表中的数据,并将其插入到 Tutorials 数据库中。

Employee 表中的数据为

Department 表中的数据为

SQL SELECT INTO 插入所有列
在这里,我们选择了 Department 表中存在的所有列,并将它们插入到数据库中。
SELECT [id]
,[DepartmentName]
INTO [SQLServer Tutorials].[dbo].[Department]
FROM [SQLTEST].[dbo].[Department]
或者我们也可以使用星号 (*),以及 select * into 语句。但是使用星号不是一个好的做法,所以始终提供列名。
SELECT * INTO [SQLServer Tutorials].[dbo].[Department] FROM [SQLTEST].[dbo].[Department]
上面的查询创建了一个新的 [Department] 表,并从源数据中插入所有记录。执行消息如下
Messages
-------
(8 rows(s) affected)
让我们看看该表是否在目标数据库中创建了数据。

在此 SQL Server Select Into 示例中,我们选择 Employee 表中的一些列,并将它们插入到 Tutorials 数据库中。在这里,我们还使用 WHERE 子句 限制行。
SELECT [FirstName]
,[LastName]
,[DepartID]
INTO [SQLServer Tutorials].[dbo].[Employee]
FROM [SQLTEST].[dbo].[Employee]
WHERE [DepartID] = 1
上面的查询创建了一个名为 [Employee] 的新表,并从源数据中插入 [FirstName]、[LastName] 和 [DepartID] 列,其中 [DepartID] 的值等于 1。
Messages
-------
(4 rows(s) affected)
让我们看看该表是否在目标数据库中创建了数据。

SQL SELECT INTO 从多个表插入数据
此示例使用 Employee 和 Department 中存在的列。接下来,将它们插入到 Tutorials 数据库中。
在这里,我们使用 INNER JOIN 通过 id 列连接两个表。
SELECT EMP.[FirstName]
,EMP.[LastName]
,DEPT.[DepartmentName]
INTO [SQLServer Tutorials].[dbo].[Select Into]
FROM [SQLTEST].[dbo].[Employee] EMP
INNER JOIN
[SQLTEST].[dbo].[Department] DEPT ON
EMP.id = DEPT.id
Messages
-------
(8 rows(s) affected)
让我们看看目标数据库中是否创建了数据。
