📜  mysql 从 select 语句创建表 - SQL (1)

📅  最后修改于: 2023-12-03 15:17:47.310000             🧑  作者: Mango

MySQL 从 SELECT 语句创建表 - SQL

当我们需要创建一个新表时,我们通常会使用 CREATE TABLE 语句来创建一个空表,并根据需要添加列和约束。但有时我们可能希望从现有表中复制一些数据,并使用这些数据创建一个新表。在这种情况下,我们可以使用 CREATE TABLE AS SELECT 语句从现有表中选择行并将它们插入新表。

语法

CREATE TABLE new_table_name AS SELECT * FROM existing_table_name;

通过这个语句,我们可以使用一个 SELECT 语句从现有表中选择数据,并将这些数据插入一个新的表中。新表的结构将被确定,以匹配 SELECT 语句的列。该语句还可以包括其他 SELECT 语句中的所有选项,如 WHEREGROUP BYORDER BY

示例

例如,我们可以从名为 customers 的现有表中创建一个名为 new_customers 的新表。新表将包含 customers 表中的所有数据和列。

CREATE TABLE new_customers AS SELECT * FROM customers;

我们还可以使用 WHERE 子句选择要复制的行。

CREATE TABLE new_customers AS SELECT * FROM customers WHERE state = 'NY';

此语句将复制 customers 表中所有状态为 NY 的行,并将它们插入到 new_customers 表中。

注意事项
  • 在使用此语句时,新表将根据 SELECT 语句的列结构自动确定。因此,确保 SELECT 语句中列的顺序和类型正确,以避免不必要的错误。
  • 如果新表已经存在,它将被覆盖并重新创建。在这种情况下,确保备份任何重要数据,并使用 IF NOT EXISTS 选项检查表是否已经存在。
  • 如果 SELECT 语句中存在任何聚合函数,新表将包含聚合结果。

通过这个简单的 CREATE TABLE AS SELECT 语句,我们可以使用现有数据快速创建一个新表。它可以帮助我们节省时间和精力,并简化我们的代码。