語法說明
格式
CREATE TABLE [schema.]table_name
( column datatype [DEFAULT value] [in_constraint_caluse]
[,column datatype [DEFAULT value] [in_constraint_caluse]...]
[,out_constraint_caluse] )
[partition_caluse]
[TABLESPACE tablespace_name];
schema : 結構名稱
table_name : 表格名稱
column : 欄位名稱
datatype : 資料型態
value : 欄位預設值
tablespace_name : 表空間名稱
以下針對 in_constraint_caluse , out_constraint_caluse , partition_caluse 子句做格式介紹
in_constraint_caluse格式介紹(在表格內建立條件限制)
[CONSTRAINT constraint_name]
{ NOT NULL |
PRIMARY KEY |
UNIQUE |
REFERENCES [schema.]table_name(column) |
CHECK(condition)}
constraint_name : 條件限制名稱
NOT NULL : 不允許有 null 值
PRIMARY KEY : 只能有唯一值,不允許有 null 值,會自動建立索引
UNIQUE : 只能有唯一值,允許有 null 值,會自動建立索引
REFERENCES : 參考其它表格的欄位值
schema : 其它表格的使用者
table_name : 其它表格
column : 其它表格的欄位
CHECK : 欄位值必須滿足所指定的條件
condition : 指定條件
out_constraint_caluse格式介紹(在表格內建立條件限制)
[CONSTRAINT constraint_name]
{ UNIQUE ( column [,column...] ) |
PRIMARY KEY ( column [,column...] ) |
FOREIGN KEY ( column_fk [,column_fk...] )
REFERENCES [schema.]table_name(column_fk2) |
CHECK(condition) }
constraint_name : 條件限制名稱
column : 欄位名稱
PRIMARY KEY : 只能有唯一值,不允許有 null 值,會自動建立索引
UNIQUE : 只能有唯一值,允許有 null 值,會自動建立索引
FOREIGN KEY : 外部條件約束,參考其它表格的欄位值
column_fk : 自表格欄位
schema : 其它表格的使用者
table_name : 其它表格
column_fk2 : 其它表格的欄位
CHECK : 欄位值必須滿足所指定的條件
condition : 指定條件
partition_caluse介紹(建立分割資料表)
範圍分割 : 以欄位值範圍 , 做分割條件
清單分割 : 指定欄位值 , 做分割條件
PARTITION BY RANGE (column [,column...])
( PARTITION [partition_name_n] VALUES LESS THAN ({ value | MAXVALUE })
[ , PARTITION [partition_name_n] VALUES LESS THAN ({ value | MAXVALUE })...])
column : 分割的欄位,無法指定ROWID , LONG , LOB , TIMESTAMP WITH TIME ZOZE型別欄位
partition_name_n : 分割名稱
value : 分割的上限值
MAXVALUE : 沒有上限值,必須指定給最後的分割
PARTITION BY LIST (column)
( PARTITION [partition_name_n] VALUES ({ value | NULL | DEFAULT })
[ , PARTITION [partition_name_n] VALUES ({ value | NULL | DEFAULT })...])
column : 分割的欄位,無法指定 LOB 型別欄位
partition_name_n : 分割名稱
value : 對應分割固定值
NULL : 只能指定給一個分割
DEFAULT : 只能指定給一個分割,且必須指定給最後的分割
語法示範
說明 : 建立emp表格到users表空間,在id欄位建立限制條件
create table emp
(id number(10) constraint id_pk primary key)
tablespace users;
說明 : 建立emp2表格,在id欄位建立外部限制條件
create table emp2
( id number(10) primary key )
constraint id_fk foreign key(id) references hr.emp(id);
說明 : 建立emp3表格,在id欄位建立限制條件(欄位值必須大於10)
create table emp3
( id number(10) primary key )
constraint id_ck check(id>10);
說明 : 根據範圍分割,建立emp4分割表格
create table emp4
( id number(10),
name varchar2(10))
partition by range(id)
( partition id_1 values less than(10),
partition id_2 values less than(20),
partition id_3 values less than(maxvalue));
說明 : 根據清單分割,建立emp5分割表格
create table emp5
( id number(10),
name varchar2(10))
partition by list(id)
( partition id_1 values (10),
partition id_2 values (20),
partition id_3 values (default));