PostgreSQL 入门

一, 简介

这里写图片描述
PostgreSQL,世界上最先进的开源数据库( 官网介绍)。
官网地址:https://www.postgresql.org/
网上关于PostgreSQL的博客十分多,这里便不再赘述,推荐知名博主阮一峰的的一篇关于PostgreSQL的博客:PostgreSQL新手入门,简洁明了,十分适合刚接触PostgreSQL的同学,例如我,哈哈。

这里有几点要注意:

  • 如果根据推荐博客中的shell指令下载不了PostgreSQL,可以使用官方推荐的apt-get install postgresql-9.4
  • 关于远程登录PostgreSQL需要修改相关配置,可以参考这篇博客Postgresql允许远程访问配置修改,然后重启PostgreSQL服务service postgresql restart
  • 为了方便开发,提高工作效率,推荐使用图形化数据库管理工具navicat premium,有兴趣的同学可以在这里下载https://pan.baidu.com/s/1bp5o9NT

    http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
    阮一峰大神的的相关博客已经写的很好,这里只对博客中没有提及的,自己实际工作中又使用到的知识点进行总结。


二,视图

视图,一个保存查询结果的数据库对象。视图,可以理解为PostgreSQL重的虚拟表。也可以说,PostgreSQL视图是代表一张或多张表查询结果数据的逻辑表。

PostgreSQL 入门_第1张图片

注意:普通视图不会保存物理数据,每次查询都是查询视图关联的几张表,但是物化视图(实例化视图)会物理保存查询结果,每次查询都是从视图直接查询。

1,普通视图

使用navicat premium工具图形化操作,创建视图十分简单
PostgreSQL 入门_第2张图片

  1. 右侧右键视图,创建新视图。
  2. 选择视图创建工具,选择表,字段,设置字段名称,如果有需要可以设置查询条件。
  3. 点击保存,就可以创建一个普通视图。

当然,如果对sql熟悉的同学可以直接使用sql语句创建视图。

然后在关联的表插入测试数据,双击创建成功的视图,就可以看到了视图数据了。
student表:
PostgreSQL 入门_第3张图片
teacher表:
PostgreSQL 入门_第4张图片
视图:
PostgreSQL 入门_第5张图片

在视图上右键设计视图,点击解释,可以看到普通视图的数据来自查询自身关联的表。
PostgreSQL 入门_第6张图片

虽然navicat premium不支持编辑视图,但是PostgreSQL9.4以上的视图是支持可以编辑的,有兴趣的同学可以看这篇文章Creating PostgreSQL Updatable Views。

2,物化视图(实例化视图)

实例化视图,可以缓存复杂的查询结果数据,而且允许你定期刷新视图数据。
navicat premium点击【其他】按钮,选择创建实例化视图,基本操作跟创建普通视图差不多。
实例化视图第一次查询,跟普通视图一样,都是查询关联的数据表,然后将数据保存,下次再次查询时,就是直接从实例化视图查询,不用再查询关联的数据表。
但是,实例化中的数据不会实时刷新,也就是说,当你表中数据发送变化时,实例化视图中的数据还是保持不变,因为数据已经实例化,不过我可以手动刷新,在实例化对象右键选择刷新,也可以直接执行sql语句REFRESH MATERIALIZED VIEW view_name


三,数据类型

PostgreSQL拥有十分丰富的数据类型支持。
这是官网对PostgreSQL数据类型的相关文档:
https://www.postgresql.org/docs/9.4/static/datatype.html
这里介绍两种特别的:

1,枚举类型

我们会teacher表增加一个字段subject,代表老师执教的科目,使用navicat premium创建枚举类型。
PostgreSQL 入门_第7张图片
选择枚举类型
PostgreSQL 入门_第8张图片
通过添加标签的形式创建三门学科
PostgreSQL 入门_第9张图片
PostgreSQL 入门_第10张图片
插入数据时可以使用图形化操作,也可以使用sql语句
INSERT INTO "public"."teacher" ("id", "name", "gender", "subject") VALUES ('1', 't1', '1', '语文');

2,复合类型

基本操作与创建枚举类型相似。
创建代表配偶的复合类型mate,为teacher表添加一个配偶字段mate。
PostgreSQL 入门_第11张图片
插入数据的sql语句为

INSERT INTO "public"."teacher" ("id", "name", "gender", "subject", "mate") VALUES ('1', 't1', '1', '语文', NULL);

注意:查看类型的时候,会看到一些一下划线开始的对象,这些都是应该是创建数据类型时附带的,实际使用中不用理会,选择对象类型时选择不带下划线的就行。
PostgreSQL 入门_第12张图片

其他数据类型官网文档有详细的介绍,如果不想看英文文档的同学,可看看网友的这篇博文,写的也很详细
http://www.cnblogs.com/stephen-liu74/archive/2012/04/30/2293602.html


四,扩展阅读

  • Managing PostgreSQL Views
  • Creating PostgreSQL Updatable Views
  • PostgreSQL Materialized Views
  • PostgreSQL官方文档地址
  • 《PostgreSQL修炼之道 从小工到专家》 by 唐成

你可能感兴趣的:(数据库)