Skip to content

SQL SELECT INTO

SQL SELECT INTO 语句用于从一个表中复制数据到新表。

语法

SQL Server / MS Access

sql
SELECT column1, column2, ...
INTO new_table_name [IN externaldatabase]
FROM old_table_name
WHERE condition;

MySQL

在 MySQL 中,使用 CREATE TABLE ... SELECT 语句:

sql
CREATE TABLE new_table_name
SELECT column1, column2, ...
FROM old_table_name
WHERE condition;

Oracle

在 Oracle 中,使用 CREATE TABLE ... AS SELECT 语句:

sql
CREATE TABLE new_table_name AS
SELECT column1, column2, ...
FROM old_table_name
WHERE condition;

示例

假设我们有一个名为 students 的表,包含以下数据:

idnameagegrade
1张三18高三
2李四17高二
3王五19高三
4赵六16高一
5钱七18高三

示例 1:SQL Server 中复制所有数据到新表

sql
SELECT *
INTO students_backup
FROM students;

执行结果:创建一个名为 students_backup 的新表,并复制 students 表中的所有数据。

示例 2:SQL Server 中复制部分数据到新表

sql
SELECT name, age, grade
INTO high_school_students
FROM students
WHERE grade = '高三';

执行结果:创建一个名为 high_school_students 的新表,并复制 students 表中年级为高三的学生数据。

示例 3:MySQL 中复制数据到新表

sql
CREATE TABLE students_backup
SELECT *
FROM students;

执行结果:创建一个名为 students_backup 的新表,并复制 students 表中的所有数据。

示例 4:Oracle 中复制数据到新表

sql
CREATE TABLE students_backup AS
SELECT *
FROM students;

执行结果:创建一个名为 students_backup 的新表,并复制 students 表中的所有数据。

注意事项

  1. 新表的结构:SELECT INTO 语句会根据选择的列自动创建新表的结构。

  2. 索引和约束:默认情况下,SELECT INTO 语句不会复制原表的索引和约束,只复制数据和列结构。

  3. 数据类型:新表中列的数据类型会与原表中对应列的数据类型相同。

  4. 性能考虑:对于大型表,SELECT INTO 操作可能会影响数据库性能,建议在非高峰时段执行。

  5. 权限:执行 SELECT INTO 语句需要有创建表的权限。

小结

SQL SELECT INTO 语句(或其等效语法)是一种用于从一个表中复制数据到新表的有效方法,它可以帮助我们快速创建表的备份或基于现有表创建新表。