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;



你可能感兴趣的:(GP开发基础)