GP數據庫中的表


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM