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) 修改表空间拥有者:
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;