Oracle数据库中使用CREATE TABLE语句创建表。创建表时要确定表的结构,即确定表中各列的名字和类型。创建表的基本命令格式如下:
CREATE TABLE[模式名.]表名(
列名数据类型[DEFAULT默认值],
列名数据类型[DEFAULT默认值],
…
);
其中:
①模式名缺省时为当前用户。
②表名在当前模式中必须唯一,长度不能超过30字节,以字母开头,可以包含字母、数字、下画线、“$”和“#”,不能使用Oracle的保留字。
③定义多个列时,各列之间用逗号(,)分隔,在同一个表中不能有同名的列。
④DEFAULT指定当前列的默认值。
⑤Oracle Database 11g中提供的系统预定义的数据类型见表9.1。
表9.1 Oracle Database 11g中常用数据类型
续表
例如,在scott用户中,按照表9.2中给出的结构创建表books。
表9.2 图书信息表books(www.daowen.com)
创建表books的SQL语句如下:
在表创建之后可以通过DESC命令查看表中各列的列名、数据类型以及是否为空等属性,用于验证表的结构是否与期望的结果一致。命令格式为:
DESC表名
在创建表时,还可以以另一个表为模板,复制其结构,从而快速创建一个表。复制表的结构是通过在CREATE语句中嵌套SELECT子查询语句来实现的,语句格式如下:
CREATE TABLE表名AS SELECT语句
例如,现在要根据雇员表emp的结构创建表emp_1,仅复制表emp中的empno、deptno、sal 3个列,同时复制部门编号为30的员工数据。
一般情况下,在通过这种方式创建的表中,列名和列的定义与原来的表一致。如果希望在创建一个新表时指定与原来的表不同的列名,可以在CREATE语句中的表名之后指定新的列名。如果只希望复制表的结构,而不复制表中的数据,可以将SELECT子句中的条件指定为一个永远为假的条件。
例如,现在希望根据表emp创建表emp_2,为复制的3个列指定新的列名,并且不复制表emp中的数据,相应的CREATE语句为:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。