上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
实例021 复制相同结构的表
【实例描述】
当实际应用中需要使用两个相同结构的数据表时,可以直接通过表结构复制功能实现。MS SQL Server、Access等数据库提供了图形化的操作界面来实现,而Oracle PL/SQL提供了一条简单语句来完成。
本实例参照图2-7中的STU表,通过CREATE TABLE命令复制一个与STU表结构相同的基本表STU1,操作完成后在SQL*Plus中可以看到STU和STU1两个表的结构,如图2-11所示。
图2-11 复制相同结构的表
【实现过程】
(1)确认STU1表是否存在,如果创建一个与已存在表相同名称的表将出现错误。通过DESC STU1命令查看STU1表。
SQL> DESC STU1 ERROR: ORA-04043: 对象STU1 不存在
(2)如果在Oracle SQL*Plus中使用以上命令后出现ERROR错误,并提示该表不存在后即可在其中输入如下代码复制表结构。
SQL> CREATE TABLE STU1 2 AS 3 SELECT * FROM STU WHERE 1=2 4 /
(3)SQL语句执行完成后再使用DESC STU1命令查看STU1表的结构,观察其字段是否与STU表一致。
【范例解析】
本实例使用CREATE TABLE命令创建基本表,与实例016不同的是没有定义基本表的字段、数据类型和约束等参数,而是以另一个已经存在的表作为蓝本进行创建。在Oracle PL/SQL中,复制相同结构的表使用如下语句:
CREATE TABLE table_new AS SELECT * FROM table_old WHERE 1=2
其中,AS是复制表结构的关键字,SELECT子句是从已存在的表中获取所有字段,WHERE子句表示只复制表结构,不复制表数据,关于表数据的复制,在后面的实例中还将会具体讲解到。
注意:上述语句中的WHERE子句只是用于限制表数据的复制,其并不是唯一的写法,读者也可以将该实例改写如下,其执行效果是相同的。
SQL> CREATE TABLE STU1 2 AS 3 SELECT * FROM STU WHERE ROWNUM<1 4 /