在 SQL 中,SELECT INTO
语句用于将数据从一个表复制到另一个表。
示例
-- copy all the contents of a table to a new table
SELECT *
INTO CustomersCopy
FROM Customers;
在这里,SQL 命令将 Customers 表中的所有数据复制到新的 CustomersCopy 表中。
SELECT INTO 语法
SQL SELECT INTO
语句的语法是
SELECT column1, column2, column3, ...
INTO destination_table
FROM source_table;
这里,
column1, column2, column3, ...
是要复制的列destination_table
是要将数据复制到的新表source_table
是要从中复制数据的表
注意: SELECT INTO
语句会创建一个新表。如果数据库中已经存在同名表,SELECT INTO
会报错。
如果要将数据复制到现有表(而不是创建新表),应该使用 INSERT INTO SELECT 语句。
仅复制选定列
我们还可以从旧表中复制选定列到新表。例如,
-- copy selected columns only
SELECT customer_id, country
INTO CustomersCountry
FROM Customers;
在这里,SQL 命令仅将 customer_id 和 country 列复制到 CustomersCountry 表中。
复制符合条件的记录
我们可以使用带有 WHERE
子句的 SELECT INTO
来复制符合指定条件的行。例如,
-- copy rows where country is USA
SELECT customer_id, age
INTO USACustomersAge
FROM Customers
WHERE country = 'USA';
这里,SQL 命令
- 创建包含 customer_id 和 age 列的 USACustomersAge 表
- 如果 country 列的值为 USA,则从
Customers
表中复制行
复制到另一个数据库
默认情况下,SELECT INTO
在当前数据库中创建一个新表。如果我们要将数据复制到不同数据库中的表,可以使用 IN
子句来完成。例如,
-- copy contents of a table to another database
SELECT *
INTO CustomersCopy
IN another_db.mdb
FROM Customers;
在这里,SQL 命令将 Customers 表复制到 another_db.mdb 数据库中的 CustomersCopy 表。
注意: 用户必须拥有 WRITE 权限才能将数据复制到不同数据库中的表。
从两个表复制到一个表
我们还可以使用带有 JOIN
子句的 SELECT INTO
将来自两个不同表的记录复制到新表。例如,
-- copy rows from Customers and Orders tables
SELECT Customers.customer_id, Customers.first_name, Orders.amount
INTO CustomerOrders
FROM Customers
JOIN Orders
ON Customers.customer_id = Orders.customer_id;
在这里,SQL 命令将 Customers 表中的 customer_id 和 first_name 以及 Orders 表中的 amount 复制到新表 CustomerOrders。
要了解更多信息,请访问 SQL JOIN。
仅复制表结构
我们还可以使用 SELECT INTO
语句创建具有给定结构的新表(不复制数据)。为此,我们使用带有返回 false
条件的 WHERE
子句。
-- copy table structure only
SELECT *
INTO NewCustomers
FROM Customers
WHERE false;
在这里,SQL 命令创建一个名为 NewCustomers 的空表,其结构与 Customers 表相同。
另请阅读