CREATE TABLE [schema.]table_name (
column_name datatype [DEFAULT expr] [inline_constraint] ...
[, table_constraint] ...
)
[segment_attributes_clause]
[table_properties] ... ;
| 子句 | 用途 | 範例 |
|---|---|---|
| column_definition | 定義欄位名、資料型態、預設值、行內約束 | empno NUMBER(4) PRIMARY KEY |
| DEFAULT | 指定插入時預設值 | hiredate DEFAULT SYSDATE |
| IDENTITY (12c+) | 自動遞增欄位 | id NUMBER GENERATED ALWAYS AS IDENTITY |
| ROWGUIDCOL | 標識全域唯一識別欄 | 配合 SYS_GUID() |
| table_constraint | 表級約束(PK、FK、UK、CHECK) | CONSTRAINT fk_dept FOREIGN KEY (deptno) REFERENCES dept(deptno) |
| ON {filegroup|DEFAULT} | 指定儲存檔案群組(SQL Server 語法,Oracle 用 TABLESPACE) | Oracle 對應 TABLESPACE users |
| TEXTIMAGE_ON | LOB 資料儲存位置(SQL Server) | Oracle 用 LOB (col) STORE AS (TABLESPACE lob_ts) |
CREATE TABLE po_headers_all (
po_header_id NUMBER(15) NOT NULL,
segment1 VARCHAR2(20) NOT NULL, -- 訂單號
vendor_id NUMBER(15) NOT NULL,
org_id NUMBER(15) NOT NULL,
creation_date DATE DEFAULT SYSDATE NOT NULL,
created_by NUMBER(15) NOT NULL,
last_update_date DATE DEFAULT SYSDATE NOT NULL,
last_updated_by NUMBER(15) NOT NULL,
approval_status VARCHAR2(25) DEFAULT 'INCOMPLETE',
CONSTRAINT po_headers_pk PRIMARY KEY (po_header_id) USING INDEX TABLESPACE po_idx,
CONSTRAINT po_headers_u1 UNIQUE (segment1, org_id) USING INDEX TABLESPACE po_idx,
CONSTRAINT po_headers_fk_vendor FOREIGN KEY (vendor_id) REFERENCES ap_suppliers(vendor_id),
CONSTRAINT po_headers_fk_org FOREIGN KEY (org_id) REFERENCES hr_operating_units(organization_id)
)
TABLESPACE po_data
PCTFREE 10
PCTUSED 40
INITRANS 2
MAXTRANS 255
STORAGE (INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0)
LOB (notes) STORE AS (TABLESPACE po_lob CHUNK 8K CACHE);
_ALL/_TL/_B 後綴、欄位 _ID/_DATE/_FLAG 後綴CREATED_BY/CREATION_DATE/LAST_UPDATED_BY/LAST_UPDATE_DATE 四大金剛COMPRESS FOR QUERY HIGH、敏感欄 ENCRYPT建表是資料庫物件生命週期的起點,嚴謹的 DDL 設計能為後續效能、維護、擴展節省十倍成本。請從今天開始,手寫您的每一個 CREATE TABLE。