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_id
和customer_name
。
创建表示例3:从多个表复制选定的列
语法:
CREATE TABLE new_table
AS (SELECT column_1, column2, ... column_n
FROM old_table_1, old_table_2, ... old_table_n);
下面来看一个例子:假设已经创建了两个表:regularcustomers
和irregularcustomers
。
regularcustomers
表有三列:rcustomer_id
,rcustomer_name
和rc_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_id
,ircustomer_name
和irc_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);