前言

postgresql是一款开源的数据库,之后项目中会用到,这儿记载下学习进程,数据库的学习和新言语的学习相似,因为都是数据库一般都是基于sql规范,所以只需有目的去测试即可,比如写个存储进程,或者运用一些特有的语法,新建个索引,看下sql履行计划等。

postgresql学习进程

1、新建表:

postgresql中的数据类型比较多,常用的和mysql中的相似,比如int,bigint,smallint。还有一些特殊的比如numeric,text, money等。

create table cz_test(
so_nbr integer not null default nextval('cz_test_seq'), 
name text,
age numeric check(age > 2) default 4,
have_money money,
is_big boolean
);

2、新建序列

CREATE SEQUENCE cz_test_seq; -- 新建序列
drop sequence cz_test_seq; -- 删去序列

运用:

select nextval('cz_test_seq'); -- 获取自增值
select currval('cz_test_seq'); -- 获取当时值
select lastval(); -- 获取任意序列最近运用的值

主动创立序列

create table cz_test(
so_nbr SERIAL, -- 相当于CREATE SEQUENCE cz_test_seq;so_nbr integer not null default nextval('cz_test_seq'), 
name text,
age numeric check(age > 2) default 4,
have_money money,
is_big boolean
);

运用作用

postgreSql学习(一)

创立索引

创立索引的方法和mysql的没什么差异

CREATE INDEX cz_test_sonbr_index ON cz_test (so_nbr);
CREATE INDEX cz_test_sonbr_index ON cz_test (so_nbr) USING gin (locations) WITH (fastupdate = off); -- 指定索引

索引类型

哈希索引、B-树索引、GIST索引、GIN索引、BRIN索引。

查看履行计划

postgresql的履行计划和mysql有点差异,postgresql只会分析履行的耗时,并不会展现索引运用情况。
explain和explain analyze有什么差异?
explain是展现初略的履行履行计划。不会真实的履行句子。
explian analyze:
可以通过运用 EXPLAIN 的 ANALYZE 选项来查看规划器估计值的准确性。通过 运用这个选项, EXPLAIN 会实践履行该查询,然后显示真实的行计数和在每个 计划节点中累计的真实运转时间,还会有一个一般 EXPLAIN 显示的估计值。

explain select * from cz_test where so_nbr = 1;

postgreSql学习(一)

explain analyze select * from cz_test where so_nbr = 1;

postgreSql学习(一)

总结

看了一晚上,发现postgresql相对于oracle和mysql给人最大的感触就是灵活,更有活力,不像oracel那么“呆板”,可是也不像mysql那样拥有插拔式的存储引擎。postgresql的这种灵活着重体现在服务层的灵活,比如数据结构更丰富,函数更多,可是存储层现在还没有深化的体会,不知道表现怎么,这个还需要深化学习。