PostgreSQL一个强大的,开源的关系型数据库系统,拥有超过15年的积极发展。PostgreSQL完全ACID兼容,全力支持外键,连接,视图,触发器和存储过程(多语言)。它包括大部分SQL92和SQL99中的数据包括整数,数字,布尔值,为char,varchar,日期,区间,和TIMESTAMP类型。



除了我们强大的支持服务外,我们还拥有充满活力的PostgreSQL专业人士和爱好者社区,您的员工可以利用并贡献自己的力量。
传奇的可靠性和稳定性
与许多专有数据库不同的是,公司报告说PostgreSQL从未在数年的高活动运行中从未崩溃。一次也没有。它只是工作。
跨平台
PostgreSQL几乎适用于所有Unix品牌(最新稳定版本的34个平台),Windows兼容性可通过Cygwin框架获得。本机Windows兼容性也适用于版本8.0及以上。
专为高容量环境而设计
我们使用一种称为MVCC的多行数据存储策略来使PostgreSQL在高容量环境下的响应速度非常快。同样的原因,领先的专有数据库供应商也使用这种技术。

2.它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备,比如IP类型和几何类型等;
3.PostgreSQL是全功能的自由软件数据库,很长时间以来,PostgreSQL是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。直到最近才有Inprise的InterBase以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。
4.PostgreSQL拥有一支非常活跃的开发队伍,目前的提交人员已经超过三十人,而且在许多黑客的努力下,PostgreSQL的质量日益提高,也从另外一个侧面上增加了人们使用PostgreSQL的信心,毕竟数据库管理系统不能象桌面操作系统那样一天宕一次还让人觉得挺满意。

1.PostgreSQL可以说是最富特色的自由数据库管理系统,甚至我们也可以说是最强大的自由软件数据库管理系统。
2.从技术角度来讲,PostgreSQL采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端C接口。而不同的客户端接口都是源自这个C接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等,同时也要指出的是,PostgreSQL对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是PostgreSQL一大优点。
二、劣势介绍
1.首先,早期的PostgreSQL继承了几乎所有Ingres,Postgres,Postgres95的问题:过于学院味,因为首先它的目的是数据库研究,因此不论在稳定性,性能还是使用方便方面,长期以来一直没有得到重视,直到PostgreSQL项目开始以后,情况才越来越好,目前,PostgreSQL已经完全可以胜任任何中上规模范围内的应用范围的业务。目前有报道的生产数据库的大小已经有TB级的数据量,已经逼近32位计算的极限。不过学院味也给PostgreSQL带来一个意想不到的好处:大概因为各大学的软硬件环境差异太大的缘故,它是目前支持平台最多的数据库管理系统的一种,所支持的平台多达十几种,包括不同的系统,不同的硬件体系。至今,它仍然保持着支持平台最多的数据库管理系统的称号。
2.其次,PostgreSQL的确还欠缺一些比较高端的数据库管理系统需要的特性,比如联机热备份,数据库集群,更优良的管理工具和更加自动化的系统优化功能等提高数据库性能的机制等。
三、总结
1.但是,话说回来,PostgreSQL拥有极其强大的扩展能力,你可以很容易地扩展数据类型,内部函数,聚集,操作符等等,而且,别忘了,你拥有所有的源程序,理论上你可以做任何你可以做的事情。因此,很多缺点,在转瞬之间就会消失也是很正常的。
2.总而言之,PostgreSQL的特性已经完全可以满足绝大部分用户的需要,而且其质量和特性仍然在日新月异地进步着,所以,我们有理由相信在不远的将来,PostgreSQL肯定能够成为一种优秀的,自由的,商业数据库的替代产品。

2、进入软件的安装向导界面,点击Next;

3、对软件的安装位置进行选择,默认位置“C:\Program Files\PostgreSQL\9.4”,建议安装在D盘,点击Next即可安装;

4、对安装的原因进行快速的选择,点击Next;

5、正在对软件进行快速的安装,需要花费一点的时间;

6、postgresql已经安装完成,点击Finish即可关闭;

进入pgAdmin中,点击工具栏按钮进入sql窗口,如图

输入查询语句,我们以最简单的语句为例子
select * from schema_a.users;
快捷键F7即可看到语句的执行计划。

在psql中,使用explain命令查看执行计划。
explain select * from schema_a.users;

explain命令可带参数:
- analyze :执行命令并显示执行事件,默认false
- verbose :对执行计划提供额外的信息,如查询字段信息等,默认false
- costs :显示执行计划的,默认true
- buffers :默认false,前置条件是analyze
- format :默认格式是text
如果记不住,可输入explain后用tab键查看可跟参数

查看执行计划,一般我们会比较关注消耗值cost和扫描的方式,如走索引或者full scan全表扫描.当COST值消耗比较大时需要注意是否有优化的可能。

二、PostgreSQL创建视图的方法
首先我们来看临时视图,临时视图和其他视图的区别是,当你连上数据库以后,创建了临时视图,当你断开连接,再连接到数据库后,临时视图就消失了。看下图,首先我们连上数据库,创建一张数据库表,因为视图都是建立在表的基础上的。
然后开始创建临时视图,命令是:
create table info(id int, name text, phone text)
create temp view vw_temp as select name, phone from info
下面第一张图中是创建表info以及显示表info的信息,第二张图是创建视图,以及显示视图vw_temp的信息。


然后退出数据库连接,再登录数据库,查看数据库里的表以及视图。
退出数据库命令\q
然后再登录命令:psql -d db02
输入密码后查看数据库表:\d
结果如下图所示,可以看到视图vw_temp已经消失了。示例中说明了临时视图的特性。

普通视图,就是具有正常功能的视图,能够一直存在于数据库中,它的数据查询都是从表中查。我们给出两个创建普通视图的示例,第一个是获取info表的id和phone字段。
不做其他操作,命令是:
create view vw_info1 as select id, phone from info;
第二个视图中,修改字段的名称,命令是:
create view vw_info2(user_id, user_phone) as select id, phone from info;
这两个视图没有太大的区别,唯一的区别就是可以自定义字段的名称。

物化视图,这种视图和其他两种视图的区别在于,它内部的数据不是来自表,而是根据查询语句返回的字段和数据生成一张新表保存数据。因此查询的时候直接就是从一张表里查询。而不会是多表查询,同时里面的数据还能更新。我们来创建一个物化视图vw_info3,然后往表中插入几条数据,后面再来进行分析和对比。
命令如下:
create materialized view vw_info3 as select id,name from info;
从下图中可以看到,目前来看,唯一的区别就是它的信息里多了一条materialized view这样一行信息

我们往表info里插入数据,然后再对视图vw_info2和vw_info3进行查询,使用explain关键字来分析他们的查询过程,来进行对比。下面第一张图是往表info里插入数据,然后显示具体的数据。第二张图是使用explain关键字分析后的显示结果。从结果中可以清晰地看到,查询普通视图vw_info2时,扫描的是info表,而查询vw_info3时,查询的是vw_info3的表。足以说明这两种视图的区别了。


配置物化视图的全量更新和增量更新,前面我们说到,物化视图是将查询语句返回后的数据生成一张新表,因此当原来的表数据更新时,物化视图中的内容并不会更新。如下面第一张图中所示,先往info表中插入一条新的数据,然后查询表info和视图vw_info3。可以看到表info中有新增的数据,而创建视图vw_info3时,vw_info3中没有数据,所以查询返回的结果什么都没有。
因此需要更新视图,配置更新的命令两种用法如下:
refresh materialized view vw_info3 with data;
refresh materialized view concurrently with data;
上面两个命令,第一个是全量更新,就是把vw_info3里的数据全部删掉,重新更新。第二种是对比vw_info3和表info里的区别,把有变化的更新过来。如下面第二张图中所示,更新以后vw_info3中就有数据了。


PostgreSQL 读作 Post-Gres-Q-L,(想听一下其发音的人员可从这里下载声音文件: MP3文件 ) 。
PostgreSQL 是面向目标的关系数据库系统,它具有传统商业数据库系统的所有功能,同时又含有将在下一代 DBMS 系统的使用的增强特性。PostgreSQL 是自由免费的,并且所有源代码都可以获得。
谁控制PostgreSQL?
如果你在寻找PostgreSQL的掌门人,或是什么中央委员会,或是什么所属公司,你只能放弃了---因为一个也不存在,但我们的确有一个 核心委员会和CVS管理组,但这些工作组的设立主要是为了进行管理工作而不是对PostgreSQL进行独占式控制,PostgreSQL项目是由任何人均 可参加的开发人员社区和所有用户控制的,你所需要做的就是订阅邮件列表,参与讨论即可(要参与PostgreSQL的开发,详见开发人员常见问题 Developer's FAQ 获取信息)。
PostgreSQL可以处理最近各个国家夏时制的变化吗?
PostgreSQL 8.0之前的版本是使用操作系统中的时区数据库来处理夏时制的信息,自8.0版及以后的版本PostgreSQL会自身含有最新的时区信息。美国夏时制的更改包括在PostgreSQL 8.0.4版以后版本及所有以后发布的大的升级版本,如8.1版,加拿大和澳大利亚夏时制的更新包括在8.0.10版及以后版本中。
我们可以用什么语言和PostgreSQL打交道?
PostgreSQL(缺省情况)只安装有C和内嵌式C的接口,其他的接口都是独立的项目,能够分别下载,这些接口项目独立的好处 是他们可以有各自的发布计划和各自独立的开发组。
一些编程语言如PHP都有访问PostgreSQL的接口,Perl、TCL、Python以及很多其他语言的接口在网站上的Drivers/Interfaces小节可找到, 并且通过Internet很容易搜索到。
(使用PostgreSQL)我需要使用什么计算机硬件 ?
由于计算机硬件大多数是兼容的,人们总是倾向于相信所有计算机硬件质量也是相同的。事实上不是, ECC RAM(带奇偶校验的内存),SCSI (硬盘)和优质的主板比一些便宜货要更加可靠且具有更好的性能。PostgreSQL几乎可以运行在任何硬件上, 但如果可靠性和性能对你的系统很重要,你就需要全面的研究一下你的硬件配置了。在我们的邮件列表上也有关于 硬件配置和性价比的讨论。

【基本介绍】
postgresql是一款功能相当强大的数据库管理系统;对主流的sql标准进行快速的支持,而且还拥有许多的现代特性,包括了触发器、mvcc、复杂查询等,并且也对各种扩展的方法支持,可以对函数、索引、数据类型进行选择,非常的适合使用在学术研究方面。
【官方介绍】
PostgreSQL是一款开源且功能强大的开源对象关系数据库管理系统(ORDBMS)。使用PostgreSQL可能很好的实现数据库服务器群集和负载均衡,并且支持几乎所有SQL功能,包括subselects、transactions 以及用户自定义类和功能,用于安全地存储数据。PostgreSQL(也称为Post-gress-Q-L)由PostgreSQL全球开发集团(全球志愿者团队)开发,不受任何公司或其他私人实体控制。并且PostgreSQL是跨平台的,可以在许多操作系统上运行,如Linux,FreeBSD,OS X,Solaris和Microsoft Windows等。
【特点介绍】
比专有供应商更好的支持除了我们强大的支持服务外,我们还拥有充满活力的PostgreSQL专业人士和爱好者社区,您的员工可以利用并贡献自己的力量。
传奇的可靠性和稳定性
与许多专有数据库不同的是,公司报告说PostgreSQL从未在数年的高活动运行中从未崩溃。一次也没有。它只是工作。
跨平台
PostgreSQL几乎适用于所有Unix品牌(最新稳定版本的34个平台),Windows兼容性可通过Cygwin框架获得。本机Windows兼容性也适用于版本8.0及以上。
专为高容量环境而设计
我们使用一种称为MVCC的多行数据存储策略来使PostgreSQL在高容量环境下的响应速度非常快。同样的原因,领先的专有数据库供应商也使用这种技术。

【功能介绍】
1.PostgreSQL的特性覆盖了SQL-2/SQL-92和SQL-3/SQL-99;2.它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备,比如IP类型和几何类型等;
3.PostgreSQL是全功能的自由软件数据库,很长时间以来,PostgreSQL是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。直到最近才有Inprise的InterBase以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。
4.PostgreSQL拥有一支非常活跃的开发队伍,目前的提交人员已经超过三十人,而且在许多黑客的努力下,PostgreSQL的质量日益提高,也从另外一个侧面上增加了人们使用PostgreSQL的信心,毕竟数据库管理系统不能象桌面操作系统那样一天宕一次还让人觉得挺满意。

【优劣介绍】
一、优点介绍1.PostgreSQL可以说是最富特色的自由数据库管理系统,甚至我们也可以说是最强大的自由软件数据库管理系统。
2.从技术角度来讲,PostgreSQL采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端C接口。而不同的客户端接口都是源自这个C接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等,同时也要指出的是,PostgreSQL对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是PostgreSQL一大优点。
二、劣势介绍
1.首先,早期的PostgreSQL继承了几乎所有Ingres,Postgres,Postgres95的问题:过于学院味,因为首先它的目的是数据库研究,因此不论在稳定性,性能还是使用方便方面,长期以来一直没有得到重视,直到PostgreSQL项目开始以后,情况才越来越好,目前,PostgreSQL已经完全可以胜任任何中上规模范围内的应用范围的业务。目前有报道的生产数据库的大小已经有TB级的数据量,已经逼近32位计算的极限。不过学院味也给PostgreSQL带来一个意想不到的好处:大概因为各大学的软硬件环境差异太大的缘故,它是目前支持平台最多的数据库管理系统的一种,所支持的平台多达十几种,包括不同的系统,不同的硬件体系。至今,它仍然保持着支持平台最多的数据库管理系统的称号。
2.其次,PostgreSQL的确还欠缺一些比较高端的数据库管理系统需要的特性,比如联机热备份,数据库集群,更优良的管理工具和更加自动化的系统优化功能等提高数据库性能的机制等。
三、总结
1.但是,话说回来,PostgreSQL拥有极其强大的扩展能力,你可以很容易地扩展数据类型,内部函数,聚集,操作符等等,而且,别忘了,你拥有所有的源程序,理论上你可以做任何你可以做的事情。因此,很多缺点,在转瞬之间就会消失也是很正常的。
2.总而言之,PostgreSQL的特性已经完全可以满足绝大部分用户的需要,而且其质量和特性仍然在日新月异地进步着,所以,我们有理由相信在不远的将来,PostgreSQL肯定能够成为一种优秀的,自由的,商业数据库的替代产品。

【安装步骤】
1、在起点软件园下载该软件的压缩包,解压并运行安装程序;2、进入软件的安装向导界面,点击Next;

3、对软件的安装位置进行选择,默认位置“C:\Program Files\PostgreSQL\9.4”,建议安装在D盘,点击Next即可安装;

4、对安装的原因进行快速的选择,点击Next;

5、正在对软件进行快速的安装,需要花费一点的时间;

6、postgresql已经安装完成,点击Finish即可关闭;

【使用方法】
一、Postgresql查看执行计划的方法进入pgAdmin中,点击工具栏按钮进入sql窗口,如图

输入查询语句,我们以最简单的语句为例子
select * from schema_a.users;
快捷键F7即可看到语句的执行计划。

在psql中,使用explain命令查看执行计划。
explain select * from schema_a.users;

explain命令可带参数:
- analyze :执行命令并显示执行事件,默认false
- verbose :对执行计划提供额外的信息,如查询字段信息等,默认false
- costs :显示执行计划的,默认true
- buffers :默认false,前置条件是analyze
- format :默认格式是text
如果记不住,可输入explain后用tab键查看可跟参数

查看执行计划,一般我们会比较关注消耗值cost和扫描的方式,如走索引或者full scan全表扫描.当COST值消耗比较大时需要注意是否有优化的可能。

二、PostgreSQL创建视图的方法
首先我们来看临时视图,临时视图和其他视图的区别是,当你连上数据库以后,创建了临时视图,当你断开连接,再连接到数据库后,临时视图就消失了。看下图,首先我们连上数据库,创建一张数据库表,因为视图都是建立在表的基础上的。
然后开始创建临时视图,命令是:
create table info(id int, name text, phone text)
create temp view vw_temp as select name, phone from info
下面第一张图中是创建表info以及显示表info的信息,第二张图是创建视图,以及显示视图vw_temp的信息。


然后退出数据库连接,再登录数据库,查看数据库里的表以及视图。
退出数据库命令\q
然后再登录命令:psql -d db02
输入密码后查看数据库表:\d
结果如下图所示,可以看到视图vw_temp已经消失了。示例中说明了临时视图的特性。

普通视图,就是具有正常功能的视图,能够一直存在于数据库中,它的数据查询都是从表中查。我们给出两个创建普通视图的示例,第一个是获取info表的id和phone字段。
不做其他操作,命令是:
create view vw_info1 as select id, phone from info;
第二个视图中,修改字段的名称,命令是:
create view vw_info2(user_id, user_phone) as select id, phone from info;
这两个视图没有太大的区别,唯一的区别就是可以自定义字段的名称。

物化视图,这种视图和其他两种视图的区别在于,它内部的数据不是来自表,而是根据查询语句返回的字段和数据生成一张新表保存数据。因此查询的时候直接就是从一张表里查询。而不会是多表查询,同时里面的数据还能更新。我们来创建一个物化视图vw_info3,然后往表中插入几条数据,后面再来进行分析和对比。
命令如下:
create materialized view vw_info3 as select id,name from info;
从下图中可以看到,目前来看,唯一的区别就是它的信息里多了一条materialized view这样一行信息

我们往表info里插入数据,然后再对视图vw_info2和vw_info3进行查询,使用explain关键字来分析他们的查询过程,来进行对比。下面第一张图是往表info里插入数据,然后显示具体的数据。第二张图是使用explain关键字分析后的显示结果。从结果中可以清晰地看到,查询普通视图vw_info2时,扫描的是info表,而查询vw_info3时,查询的是vw_info3的表。足以说明这两种视图的区别了。


配置物化视图的全量更新和增量更新,前面我们说到,物化视图是将查询语句返回后的数据生成一张新表,因此当原来的表数据更新时,物化视图中的内容并不会更新。如下面第一张图中所示,先往info表中插入一条新的数据,然后查询表info和视图vw_info3。可以看到表info中有新增的数据,而创建视图vw_info3时,vw_info3中没有数据,所以查询返回的结果什么都没有。
因此需要更新视图,配置更新的命令两种用法如下:
refresh materialized view vw_info3 with data;
refresh materialized view concurrently with data;
上面两个命令,第一个是全量更新,就是把vw_info3里的数据全部删掉,重新更新。第二种是对比vw_info3和表info里的区别,把有变化的更新过来。如下面第二张图中所示,更新以后vw_info3中就有数据了。


【常见问题】
PostgreSQL 是什么?该怎么发音?Postgres又是什么?PostgreSQL 读作 Post-Gres-Q-L,(想听一下其发音的人员可从这里下载声音文件: MP3文件 ) 。
PostgreSQL 是面向目标的关系数据库系统,它具有传统商业数据库系统的所有功能,同时又含有将在下一代 DBMS 系统的使用的增强特性。PostgreSQL 是自由免费的,并且所有源代码都可以获得。
谁控制PostgreSQL?
如果你在寻找PostgreSQL的掌门人,或是什么中央委员会,或是什么所属公司,你只能放弃了---因为一个也不存在,但我们的确有一个 核心委员会和CVS管理组,但这些工作组的设立主要是为了进行管理工作而不是对PostgreSQL进行独占式控制,PostgreSQL项目是由任何人均 可参加的开发人员社区和所有用户控制的,你所需要做的就是订阅邮件列表,参与讨论即可(要参与PostgreSQL的开发,详见开发人员常见问题 Developer's FAQ 获取信息)。
PostgreSQL可以处理最近各个国家夏时制的变化吗?
PostgreSQL 8.0之前的版本是使用操作系统中的时区数据库来处理夏时制的信息,自8.0版及以后的版本PostgreSQL会自身含有最新的时区信息。美国夏时制的更改包括在PostgreSQL 8.0.4版以后版本及所有以后发布的大的升级版本,如8.1版,加拿大和澳大利亚夏时制的更新包括在8.0.10版及以后版本中。
我们可以用什么语言和PostgreSQL打交道?
PostgreSQL(缺省情况)只安装有C和内嵌式C的接口,其他的接口都是独立的项目,能够分别下载,这些接口项目独立的好处 是他们可以有各自的发布计划和各自独立的开发组。
一些编程语言如PHP都有访问PostgreSQL的接口,Perl、TCL、Python以及很多其他语言的接口在网站上的Drivers/Interfaces小节可找到, 并且通过Internet很容易搜索到。
(使用PostgreSQL)我需要使用什么计算机硬件 ?
由于计算机硬件大多数是兼容的,人们总是倾向于相信所有计算机硬件质量也是相同的。事实上不是, ECC RAM(带奇偶校验的内存),SCSI (硬盘)和优质的主板比一些便宜货要更加可靠且具有更好的性能。PostgreSQL几乎可以运行在任何硬件上, 但如果可靠性和性能对你的系统很重要,你就需要全面的研究一下你的硬件配置了。在我们的邮件列表上也有关于 硬件配置和性价比的讨论。