跳到主要内容

SQL SELECT INTO(复制表)

以下是 SQL 中 SELECT INTO 语句的三个关键知识点的概括:

  1. SELECT INTO 语句的基本用法:在 SQL 中,SELECT INTO 语句用于将数据从一个表复制到一个新表。例如,SELECT * INTO NewTable FROM OldTable;OldTable 表中的所有数据复制到新创建的 NewTable 表中。

  2. 复制选定列和符合特定条件的记录:我们可以选择性地从源表中复制特定的列到目标表中,如 SELECT column1, column2 INTO NewTable FROM OldTable;。此外,还可以使用 WHERE 子句复制符合特定条件的记录,例如 SELECT * INTO NewTable FROM OldTable WHERE condition;

  3. 复制表结构但不复制数据:使用 SELECT INTO 可以复制现有表的结构而不复制其数据。这通过在查询中添加一个永远不会返回真实记录的 WHERE 条件实现,例如 SELECT * INTO NewTable FROM OldTable WHERE 1 = 0;

在 SQL 中,SELECT INTO 语句用于将数据从一个表复制到另一个表。

示例

-- 将一个表的所有内容复制到一个新表
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 语句。

仅复制选定列

我们还可以从旧表中复制选定的列到新表。例如,

-- 仅复制选定的列
SELECT customer_id, country
INTO CustomersCountry
FROM Customers;

这里,SQL 命令仅将 customer_idcountry 列复制到 CustomersCountry 表中。

复制符合条件的记录

我们可以在 SELECT INTO 中使用 WHERE 子句来复制符合特定条件的行。例如,

-- 复制国家为 USA 的行
SELECT customer_id, age
INTO USACustomersAge
FROM Customers
WHERE country = 'USA';

这里,SQL 命令

  • 创建了一个带有 customer_idage 列的 USACustomersAge
  • 如果 Customers 表中的 country 列的值为 USA,则复制行

复制到另一个数据库

默认情况下,SELECT INTO 在当前数据库中创建一个新表。如果我们想将数据复制到另一个数据库中的表,我们可以使用 IN 子句实现。例如,

-- 将表的内容复制到另一个数据库
SELECT *
INTO CustomersCopy
IN another_db.mdb
FROM Customers;

这里,SQL 命令将 Customers 表复制到 another_db.mdb 数据库中的 CustomersCopy 表。

注意: 用户必须拥有写入权限才能将数据复制到另一个数据库中的表。

从两个表复制到一个表

我们还可以使用 JOIN 子句与 SELECT INTO 将两个不同表中的记录复制到一个新表。例如,

-- 从 Customers 和 Orders 表复制行
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_idfirst_name,以及 Orders 表中的 amount 复制到一个新表 CustomerOrders

要了解更多,请访问 SQL JOIN

仅复制表结构

我们还可以使用 SELECT INTO 语句创建一个具有给定结构的新表(不复制数据)。为此,我们使用返回 false 的条件的 WHERE 子句。

-- 仅复制表结构
SELECT *
INTO NewCustomers
FROM Customers
WHERE false;

这里,SQL 命令创建了一个名为 NewCustomers 的空表,其结构与 Customers 表相同。