MySQL CREATE TABLE AS语句

时间:2019-02-04 12:52:27  来源:igfitidea点击:

MySQL CREATE TABLE AS语句用于通过复制现有表的列来创建表。
以这种方式创建表时,将使用现有表中的数据(基于SELECT语句)填充新表。

语法

MySQL中CREATE TABLE AS语句的语法为:

CREATE TABLE [ IF NOT EXISTS ] new_table [ AS ] 
  SELECT expressions
  FROM existing_tables
  [WHERE conditions];
参数说明
IF NOT EXISTS可选的。如果指定,则如果表已经存在,则CREATE TABLE AS语句将不会引发错误。
new_table要创建的表的名称。
AS可选的。是否指定AS关键字对表的创建没有影响。
expressions要在new_table中创建的来自existing_tables中的字段。字段的定义将被转移到创建的new_table中。
existing_tables要从中复制字段定义和相关记录的现有表(根据WHERE子句)。
WHERE conditions要将记录复制到new_table,必须满足的条件。

可选的。将记录复制到new_table时必须满足的条件。

说明

  • existing_tables中的字段定义将被复制到new_table。
  • new_table将根据WHERE子句中条件的记录来进行填充。

MySQL CREATE TABLE AS示例

通过复制另一个表中的所有字段来创建表:

CREATE TABLE local_companies AS 
  SELECT *
  FROM companies
  WHERE state = 'Florida';

本示例将创建一个名为local_companies的新表,其中包含companies表中的所有字段。数据包含所有Florida州的公司。


通过复制多个表中的选定字段来创建表:

CREATE TABLE suppliers AS
  SELECT companies.company_id AS "supplier_id", 
         companies.address, companies.state, categories.category_type
  FROM companies, categories
  WHERE companies.company_id = categories.category_id
  AND companies.state = 'Florida';

本示例将基于来自company和category表的列定义来创建一个称为supplier的新表。注意,在本例中,我们给company_id字段起别名为supplier_id,因为我们希望新供应商表中的字段名为supplier_id,而不是company_id。