SQL SELECT INTO 语句

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
  • 列:它允许我们选择要从表中 选择 的列数。可以是一个或多个。
  • New_Table:请为 SQL Server 指定完全限定的唯一名称。
  • 源:数据库中存在一个或多个表。使用 JOINS 连接多个表。

下面的截图显示,我们的 tutorials 数据库中没有 Department 或 Employee 表。因此,我们的任务是使用 SELECT INTO 语句从 TEST 数据库中获取该表中的数据,并将其插入到 Tutorials 数据库中。

Databases and Tables in Object Explorer 1

Employee 表中的数据为

Data inside a Employee Table 2

Department 表中的数据为

Data in Department table 3

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 SELECT INTO Statement 5

在此 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)

让我们看看该表是否在目标数据库中创建了数据。

SELECT INTO Statement 7

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)

让我们看看目标数据库中是否创建了数据。

SELECT INTO Statement 9