当前位置: 首页 > 教程 > Oracle >

Oracle创建表(create table as)

精华
小牛编辑
143浏览
2023-03-14

CREATE TABLE AS语句用于通过复制现有表的列从现有表来创建新表。

注意:如果以这种方式创建表,则新表将包含现有表中的记录。

语法:

CREATE TABLE new_table  
AS (SELECT * FROM old_table);

创建表示例1:复制另一个表的所有列

在此示例中,我们通过复制现有表Customers中的所有列来创建newcustomers表。

CREATE TABLE newcustomers  
AS (SELECT *   FROM customers  WHERE customer_id < 5000);

新创建的表命名为newcustomers并具有与customers相同的表字段和记录(编号小于5000的所有记录)。

创建表示例2:复制另一个表的选定列

语法:

CREATE TABLE new_table  
  AS (SELECT column_1, column2, ... column_n  
      FROM old_table);

下面来看另一个例子:

CREATE TABLE newcustomers2  
AS (SELECT customer_id, customer_name  
    FROM customers  
    WHERE customer_id < 5000);

上面的例子将创建一个名为newcustomers2的新表。 此表包含customers表中指定的两列:customer_idcustomer_name

创建表示例3:从多个表复制选定的列

语法:

CREATE TABLE new_table  
AS (SELECT column_1, column2, ... column_n  
    FROM old_table_1, old_table_2, ... old_table_n);

下面来看一个例子:假设已经创建了两个表:regularcustomersirregularcustomers

regularcustomers表有三列:rcustomer_idrcustomer_namerc_city

CREATE TABLE  "regularcustomers"   
   (    "RCUSTOMER_ID" NUMBER(10,0) NOT NULL ENABLE,   
    "RCUSTOMER_NAME" VARCHAR2(50) NOT NULL ENABLE,   
    "RC_CITY" VARCHAR2(50)  
   )  
/

第二个表:irregularcustomers也有三列:ircustomer_idircustomer_nameirc_city

CREATE TABLE  "irregularcustomers"   
   (    "IRCUSTOMER_ID" NUMBER(10,0) NOT NULL ENABLE,   
    "IRCUSTOMER_NAME" VARCHAR2(50) NOT NULL ENABLE,   
    "IRC_CITY" VARCHAR2(50)  
   )  
/

在下面的示例中,将创建一个表名:newcustomers3,从两个表复制指定列。

示例:

CREATE TABLE newcustomers3  
  AS (SELECT regularcustomers.rcustomer_id, regularcustomers.rc_city, irregularcustomers.ircustomer_name  
      FROM regularcustomers, irregularcustomers  
      WHERE regularcustomers.rcustomer_id = irregularcustomers.ircustomer_id  
      AND regularcustomers.rcustomer_id < 5000);