SQL Server 关键字

SQL Server (Transact-SQL) SELECT INTO 关键字用于通过复制现有表的列来从现有表创建表。以这种方式创建表时,新表将填充现有表中的记录(基于 SELECT 语句)。

语法

使用 SELECT INTO 的语法SQL Server (Transact-SQL) 中的关键字如下:

/* 复制所有列到新表 */
SELECT *
INTO new_table
FROM old_table
WHERE condition;

/* 复制所选择的列到新表 */
SELECT column1, column2, column3, ...
INTO new_table
FROM old_table
WHERE condition; 

示例:

考虑一个名为 Employee 的数据库表,其内容如下记录:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

复制表的所有列:下面的语句用于复制Employee 表的所有列转换为名为 Employee_PT 的新表。新表将包含 Employee 表中员工年龄小于 28 岁的所有记录。

SELECT * INTO Employee_PT 
FROM Employee
WHERE Age < 28;

-- 查看结果
SELECT * FROM Employee_PT; 

这将产生如下所示的结果:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800

复制表的选定列:使用 SELECT INTO 语句时也可以复制选定列。在下面的示例中,复制的列为:EmpID、Name 和 City。

SELECT EmpID, Name, City INTO Employee_PT 
FROM Employee
WHERE Age < 28;

-- 查看结果
SELECT * FROM Employee_PT; 

这将产生如下所示的结果:

EmpIDNameCity
1JohnLondon
2MarryNew York
3JoParis

使用AS子句:AS子句可用于重命名列名。请参阅下面的示例:

SELECT EmpID, Name AS EmployeeName, City INTO Employee_PT 
FROM Employee
WHERE Age < 28;

-- 查看结果
SELECT * FROM Employee_PT; 

这将产生如下所示的结果:

EmpIDEmployeeNameCity
1JohnLondon
2MarryNew York
3JoParis