建表一般来说是个挺简单的事情,但是Oracle的建表语句有很多可选的参数,有些我们可能平时不太用,用的时候又不知道怎么用,这里就写一个较完整的建表的例子:
CREATE TABLE banping
(id NUMBER(5)
CONSTRAINT banping_id_pk PRIMARY KEY,
last_name VARCHAR2(10)
CONSTRAINT banping_last_name_nn NOT NULL,
first_name
VARCHAR2(10) NOT NULL UNIQUE,
userid VARCHAR2(8)
CONSTRAINT banping_userid_uk
UNIQUE,
start_date DATE DEFAULT SYSDATE,
title
VARCHAR2(10),
dept_id
NUMBER(7)
CONSTRAINT banping_dept_id_fk
REFERENCES dept(id),
salary NUMBER(11,2),
user_type
VARCHAR2(4)
CONSTRAINT banping_user_type_ck
CHECK
(user_type
IN(‘IN‘,‘OUT‘)),
CONSTRAINT banping_uk_title UNIQUE
(title,salary)
)
INITRANS 1 MAXTRANS 255
PCTFREE 20
PCTUSED 50
STORAGE( INITIAL 1024K NEXT 1024K
PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS
5)
TABLESPACE data
解释说明如下:
语法
CREATE TABLE [schema.]table
(column datatype [,
column datatype] … )
[TABLESPACE
tablespace]
[PCTFREE integer]
[PCTUSED
integer]
[INITRANS integer]
[MAXTRANS
integer]
[STORAGE storage-clause]
[LOGGING |
NOLOGGING]
[CACHE | NOCACHE] ];
Schema:表的所有者
Table:表名
Column:字段名
Datatype:字段的数据类型
Tablespace:表所在的表空间
Pctfree:为了行长度增长而在每个块中保留的空间的量(以占整个空间减去块头部后所剩余空间的百分比形式表示),当剩余空间不足pctfree时,不再向该块中增加新行。
Pctused:在块剩余空间不足pctfree后,块已使用空间百分比必须小于pctused后,才能向该块中增加新行。
INITRANS:在块中预先分配的事务项数,缺省值为1
MAXTRANS:限定可以分配给每个块的最大事务项数,缺省值为255
STORAGE:标识决定如何将区分配给表的存储子句
LOGGING:指定表的创建将记录到重做日志文件中。它还指定所有针对该表的后续操作都将被记录下来。这是缺省设置。
NOLOGGING:指定表的创建将不被记录到重做日志文件中。
CACHE:指定即使在执行全表扫描时,为该表检索的块也将放置在缓冲区高速缓存的LRU列表最近使用的一端。
NOCACHE:指定在执行全表扫描时,为该表检索的块将放置在缓冲区高速缓存的LRU列表最近未使用的一端。
STORAGE子句:
INITIAL:初始区的大小
NEXT:下一个区的大小
PCTINCREASE:以后每个区空间增长的百分比
MINEXTENTS:段中初始区的数量
MAXEXTENTS:最大能扩展的区数