7.基本ddl

1.schema
对象搜索路径默认为 search_path 
创建对象不指定schema时默认放到public下

1.1 创建
create schema schema1;
1.2 修改名称和拥有者
alter schema schema1 rename to schema2;
alter schema schema2 owner to current_user;

2.tablespace
2.1创建表空间
mkdir -p /home/postgres/tbs2
create tablespace tbs2 location '/home/postgres/tbs2';
2.2将表move到新的表空间
alter table t1 set tablespace tbs2;

3.table
3.1 建表
create table t1(id int primary key,name varchar(16));
3.2 根据现有表建表
create table t2 as select * from t1;
create table t3 like (like t1);--默认只有表结构类似于where 1=2
create table t4 (like t1 including all);
{ including | excluding } { comments | constraints | defaults | identity | indexes | statistics | storage | all }
3.3 定义缺省值和自增列
create table t5(id serial,gmt_time timestamp default now());
3.4 修改表
3.4.1 修改表名
alter table t1 rename to t10;
3.4.2 修改字段名
alter table t1 rename column id to id2;
3.4.3 增加/删除字段
alter table t1 add column c1 int;
alter table t1 drop column c1;
3.4.4 修改字段默认值
alter table t1 alter column name set default 'AAAA';
3.4.5 修改字段类型(注意,pg不做校验,数据会可能会失真
alter table t1 alter column name type varchar(8);
3.4.6 修改表的schema
alter table public.t1 set schema public;

4.constraints
主键/外键/唯一/非空/check
4.1建表时增加
create table t6(id int primary key,
                id_n int not null,
                id_u int,
                id_f int,
                id_c int check(id_c >0),
                unique(id_u),
                foreign key(id_f) references t1(id)
                );
4.2给现有表添加约束
alter table t2 add constraint pk_t2 primary key(id);

5.index
参考https://yq.aliyun.com/articles/111793
5.1 index type
btree  最常用,适合等值,范围,排序
bitmap 字段候选值很少,不适合dml频繁的表
hash   字段值很长的等值检索(也适用于降低索引热块争用)
gin    多值类型,如数组,JSON,多列任意组合等
gist和sp-gist 空间数据和范围数据
brin   block range index,存储连续相邻的block的统计信息(每次统计pages_per_range个block),适合流式数据,监控数据
rum    多字段任意组合,多值查询、全文检索、相似查询
bloom  多列任意组合查询
zombodb 提供ElasticSearch接口
function  各种表达式以及条件索引
5.2 create index
5.2.1 创建索引
create index idx_t1_1 on t1(id);
5.2.2 在线创建索引
create index concurrently idx_t1_2 on t1(id);--类似于oracle online,不堵塞dml
5.2.3 降序索引(默认升序)
create index concurrently idx_t1_3 on t1(id desc,name asc);
5.2.4 删除索引
drop index idx_t1_1;
5.2.5 唯一索引
create unique index idx_t1_4 on t1(id);
5.2.6 复合索引
create index idx_t1_5 on t1(id,name);
5.2.7 附加字段索引
create unique index idx_t1_6 on t1(id) include (name);
5.2.8 局部索引(满足条件的行才记录)
create index idx_t1_7 on t1(name,id) where name<>'BBBB' and id>10;
5.2.9 表达式索引
create index idx_t1_8 on t1(substr(id,10,2));
5.2.10 重建索引
reindex index idx_t1_7;--不推荐,会堵住dml
create index concurrently + drop + rename--(推荐)

6.分区表
range/list/hash 推荐使用pg_pathman插件加速
1.range
create table t1_part(id bigint,name varchar(16),gmt_time timestamp) partition by range(gmt_time);
create table t1_part_p2017 partition of t1_part for values from (minvalue) to ('2018-01-01 00:00:00');
create table t1_part_p201801 partition of t1_part for values from ('2018-01-01 00:00:00') to ('2018-02-01 00:00:00');
create table t1_part_p20180201 partition of t1_part for values from ('2018-02-01 00:00:00') to ('2018-02-02 00:00:00');
2.list
create table t2_part(id bigint,name varchar(16),gmt_time timestamp) partition by list(name);
create table t2_part_a partition of t2_part for values in ('AAAAA');
create table t2_part_bc partition of t2_part for values in ('BBBBB','CCCCC');
create table t2_part_d partition of t2_part for values in ('DDDDD');
3.hash
create table t3_part(id bigint,name varchar(16),gmt_time timestamp) partition by hash(id);
create table t3_part_p0 partition of t3_part for values with (modulus 4,remainder 0);
create table t3_part_p1 partition of t3_part for values with (modulus 4,remainder 1);
create table t3_part_p2 partition of t3_part for values with (modulus 4,remainder 2);
create table t3_part_p3 partition of t3_part for values with (modulus 4,remainder 3);
4.composite
create table t1_part_p201803 partition of t1_part for values from ('2018-02-02 00:00:00') to ('2018-04-01 00:00:00') partition by list(name);
create table t1_part_p201803_a partition of t1_part_p201803 for values in ('AAAAA');

7.临时表
临时表定义无法永久保留在数据中,会话结束,临时表自动被删
三种级别
ON COMMIT PRESERVE ROWS:会话级别临时表(缺省)
ON COMMIT DELETE ROWS:事务级别,事务结束删除数据保留表定义
ON COMMIT DROP:事务结束,删除表数据及定义
create temp table temp_t1(id int,name varchar(16)) on commit preserve rows;
create temp table temp_t2(id int,name varchar(16)) on commit delete rows;
create temp table temp_t3(id int,name varchar(16)) on commit drop;

8.view
view就是查询,只有简单视图才能dml
create or replace view v_tl as select t1.id id1,t1.name name1,t2.id id2,t2.name name2 from t1,t2 where t1.id=t2.id;

9.sequence
9.1 create
create sequence seq_1 increment by 1 minvalue 1 no maxvalue start with 1 cache 100 no cycle;
9.2 调用
select nextval('seq_1');
9.3 查看当前值
select currval('seq_1');
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容