CREATE TABLE介紹

語法說明
  • 建立表格物件
格式
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));