DBASK-数据库管理员结构化知识体系-Structured knowledge system for DataBase Administrators
SQL基础SQL进阶SQL函数

Home

SQL进阶:sql select into

通过 SQL,您可以从一个表复制信息到另一个表。SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

SQL SELECT INTO 语句

SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

注意:

MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。

当然你可以使用以下语句来拷贝表结构及数据:

CREATE TABLE 新表 AS SELECT * FROM 旧表 SQL SELECT INTO 语法 假设有一个名为 employees 的表,包含以下数据:

EmployeeID FirstName LastName Age Department
1 John Doe 30 Sales
2 Jane Smith 25 HR
3 Sam Brown 28 IT

要创建一个名为 employees_backup 的新表,并将 employees 表中的所有数据插入到新表中,可以使用以下 SQL 语句:

SELECT *
INTO employees_backup
FROM employees;

执行此语句后,新的 employees_backup 表将仅包含年龄大于 25 岁的员工的数据。

SELECT EmployeeID, FirstName, LastName, Age, Department
INTO employees_backup
FROM employees
WHERE Age > 25;

执行此语句后,新的 employees_backup 表将仅包含年龄大于 25 岁的员工的数据。

使用注意事项

表结构:

  • SELECT INTO 会创建一个新表,并且新表的结构将基于选择的列和数据类型。
  • 如果新表已经存在,SELECT INTO 语句将失败。在这种情况下,可以使用 INSERT INTO ... SELECT 语句。

数据库支持:

  • SELECT INTO 语句在 SQL Server 中非常常用,但在 MySQL 和 PostgreSQL 中通常使用 CREATE TABLE ... AS SELECT 语句。

在其他数据库中的替代方案

MySQL 和 PostgreSQL

在 MySQL 和 PostgreSQL 中,可以使用 CREATE TABLE ... AS SELECT 来实现类似的功能:

CREATE TABLE employees_backup AS
SELECT EmployeeID, FirstName, LastName, Age, Department
FROM employees
WHERE Age > 25;

来源:https://www.runoob.com/sql/sql-select-into.html