1. 創建表
1) 創建普通表:
CREATE TABLE table_name (
column_1 integer PRIMARY KEY DEFAULT nextval('sequence_name'),
--為表建立主鍵,並設置默認值為sequence自動生成;
column_2 varchar(40) NOT NULL,
--非空限定(如果不限定的話,默認為NULL);
column_3 varchar(40) NOT NULL CHECK (column_3 <> ''),
--檢查列約束;
column_4 char(5) UNIQUE,
--為column_4字段定義一個唯一約束;
column_5 numeric(10,2),
--在表示整型的同時,還可以控制精度;
column_6 date CONSTRAINT constraint_name NOT NULL,
--定義一個給定名字的非空約束;
column_7 text,
--text類型為存放文本文件之類的內容;
column_8 timestamp DEFAULT current_timestamp,
--為時間類型定義默認值;
CONSTRAINT constraint_name FOREIGN KEY(column_8) REFERENCES referenced_table_name(referenced_column_name),
--定義外鍵約束,當前表的外鍵,必須是主表的主鍵;
CONSTRAINT constraint_name1 CHECK (column_1 > 100 AND column_2 <> ''),
--檢查表約束可以建在一個或多個字段上;
CONSTRAINT constraint_name2 UNIQUE(column_1)
--定義一個唯一表約束,唯一性約束可以建在一個或多個字段上;
) DISTRIBUTED BY (column_1) TABLESPACE tablespace_name; --為表指定表空間名
2) 創建分區表:
CREATE TABLE dw.tdw_12582_dn_dat_d
(
statis_date numeric(8,0), -- 統計日期
serv_num character varying(15), -- 手機卿
)
WITH (APPENDONLY=true, COMPRESSLEVEL=5, COMPRESSTYPE=zlib, OIDS=FALSE
)
DISTRIBUTED BY (serv_num)
PARTITION BY LIST(statis_date)
(
PARTITION pd_20150801 VALUES(20150801) WITH (appendonly=true, compresslevel=5, compresstype=zlib) TABLESPACE dataspace,
PARTITION pd_20150802 VALUES(20150802) WITH (appendonly=true, compresslevel=5, compresstype=zlib) TABLESPACE dataspace,
)
PARTITION BY LIST(statis_month)
subpartition by list (statis_date)
(
partition pm_201508 values(201508)
(
subPARTITION pd_20150801 VALUES(20150801) WITH (appendonly=true, compresslevel=5, compresstype=zlib) TABLESPACE dataspace,
subPARTITION pd_20150802 VALUES(20150802) WITH (appendonly=true, compresslevel=5, compresstype=zlib) TABLESPACE dataspace,
--------------------
)
)
;
ALTER TABLE dw.tdw_12582_dn_dat_d OWNER TO vgopsa;
COMMENT ON COLUMN dw.tdw_12582_dn_dat_d.statis_date IS '統計日期';
COMMENT ON COLUMN dw.tdw_12582_dn_dat_d.serv_num IS '手機卿';
2. 修改表結構
操作類型 執行語句
列重命名 alter table table_name rename column old_column_name to new_column_name;
表重命名 alter table table_name rename to new_table_name;
添加新的列 alter table table_name add column column_name column_type
或
alter table table_name add column column_name column_type not null default 10;
刪除依賴於被依賴字段 alter table table_name drop column column_name restrict【默認方式】|cascade;
修改字段數據類型 alter table table_name alter column column_name integer【或其它類型】;
修改字段默認值 alter table table_name alter column column_name set default expression
修改列名/修改列名並設置為非空限制/修改列名並刪除非空限制 alter table table_name alter column column_name;
或
alter table table_name alter column column_name set not null;
或alter table table_name alter column column_name drop not null;
刪除字段默認值 alter table table_name alter column column_name drop default;
設置字段存儲模式 alter table table_name alter column column_name set storage { plain | external | extended | main } 【plain: 用於定長的數值,內聯且不壓縮的;
External: 用於外部保存,不壓縮的數據;EXTENDED: 用於外部的壓縮數據;MAIN:用於內聯,可壓縮的數據】
添加主鍵約束 alter table table_name add constraint constraint_name primary key (key_column_name);
刪除約束 alter table table_name drop constraint constraint_name
修改表所存放的表空間 alter table table_name set tablespace tablespace_name;
修改表的擁有者(即:將表移到新的用戶下) alter table table_name old_owner_name to new_owner_name;
3. 創建及修改表空間
1) 創建表空間:
如在 /data/indexes 路徑下創建一個表空間 tablespace_name,由用戶 owner_name所擁有
CREATE TABLESPACE tablespace_name OWNER owner_name LOCATION '/data/indexes';
2) 修改表空間名稱:
alter tablespace old_tablespace_name rename to new_tablespace_name;
3) 修改表空間擁有者:
alter tablespace tablespace_name old_owner_name to new_owner_name;
文章來源: https://blog.csdn.net/learning_oracle_lh/article/details/50484761