GP数据库DML语句

19 篇文章 0 订阅
1 篇文章 0 订阅
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;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值