2015第15周日PostgreSQL学习

英文版官网地址:http://www.postgresql.org/

上面显示的最新版本信息是PostgreSQL 9.4.1, 9.3.6, 9.2.10, 9.1.15 & 9.0.19 Released!

中文版社区地址:http://www.postgres.cn/home

显示2014/12/18: 全球开发组宣布业界领先的开源关系数据库PostgreSQL9.4版发布,这个版本新增了许多的功能,来适应不同的数据库用户灵活性、可伸缩性和性能提升的要求,包括对JSON 数据的支持改进,增强了复制和索引的性能

  • 功能

    • PostgreSQL 拥有大型商用数据库最多的功能,例如:事务,子查询,触发器,视图,外键参考完整性和复杂的锁定等。 我们还有一些它们没有的特性,如用户定义类型,继承,规则和多版本并行控制以减少锁的争用等。
  • 性能

    • PostgreSQL和其他商用或开源的数据库具有类似的性能。对某些数据处理快一些,对其他一些处理慢一些。 与其他数据库相比,我们的性能优劣通常在 +/- 10%之间。
  • 可靠性

    • 我们都知道数据库必须是可靠的,否则它就一点用都没有。我们努力做到发布经过认真测试的,缺陷最少的稳定代码。每个版本至少有一个月的 beta 测试时间,并且我们的发布历史显示我们可以提供稳定的,牢固的,可用于生产使用的版本。我们相信在这方面我们与其他的数据库软件是相当的。
  • 支持

    • 我们的邮件列表提供一个非常大的开发人员和用户的组以帮助解决所碰到的任何问题。我们不能保证总是能解决问题,相比之下,商用数据库软件也并不是总能够提供解决方法。 直接与开发人员、用户群、手册和源程序接触使PostgreSQL的支持比其他数据库还要好。还有一些商业性的全面技术支持,可以给提供给那些需要的人。(参阅1.7 小节)
  • 价格

    • 我们对任何用途都免费,包括商用和非商用目的。 你可以不加限制地向你的产品里加入我们的代码,除了那些我们在上面的版权声明里声明的 BSD版权之外的内容。

有三个主要方面可以提升PostgreSQL的潜能。

  • 查询方式的变化,这主要涉及修改查询方式以获取更好的性能:
    • 创建索引,包括表达式和部分索引;
    • 使用COPY语句代替多个Insert语句;
    • 将多个SQL语句组成一个事务以减少提交事务的开销;
    • 从一个索引中提取多条记录时使用CLUSTER;
    • 从一个查询结果中取出部分记录时使用LIMIT;
    • 使用预编译式查询(Prepared Query);
    • 使用ANALYZE以保持精确的优化统计;
    • 定期使用 VACUUM 或 pg_autovacuum
    • 进行大量数据更改时先删除索引(然后重建索引)

相比MySQL,PostgreSQL并没有什么刚性的缺点,但是它的纯免费特征确实是MySQL无法比拟的。它完全可以成为软件产品解决方案中非常重要的一环,特别是针对很多中低端用户,不仅在使用中不会感到任何差异,而且还能节省一部分额外的费用,这对于产品的市场推广是非常有帮助的。

学习手册:http://www.cnblogs.com/stephen-liu74/archive/2012/06/08/2315679.html

将多列转成1列

在实际应用中常常遇见这样的情况,见下表,我们现在需要统计出来每年每个人的工资总和以及发放月份。

user_name year month money
张三 2011 1 900
张三 2011 2 1200
张三 2011 5 1100
张三 2011 6 1300
李四 2011 1 1100
李四 2011 3 1200

即我们要得到下面表的结果

user_name year monthes total money
张三 2011 1,2,5,6 4500
李四 2011 1,3 2300

首先我们想到的是有这样的SQL语句:
SELECT user_name,year,myfunction(month) AS monthes, SUM(money) AS total_money FROM table GROUP BY user_name,year;

像count或者sum一样吧数据表中的某个字段按照需要拼接起来,但是在PostgreSQL好像没有直接的方法来实现(或许有笔者没有发现,正因为没有发现所以笔者才研究了半天得到下面的心得)。

方法一:在PostgreSQL中如果不自定义函数直接用SQL来实现

SELECT t1.user_name, t1.year, ARRAY_TO_STRING(array(SELECT t2.month FROM table t2 WHERE t2.user_name=t1.user_name AND  t2.year=t1.year), ‘,’)  AS monthes, SUM(t1.money) AS total_money FROM table t1 WHERE 1 GROUP BY t1.user_name, t1.year;

这里主要是用了PostgreSQL的内置数组函数array_to_string把数组拼接成字符串。

PostgreSQL的ARRAY_AGG函数是用来连接到一个数组中的输入值,包括空

SELECT ARRAY_AGG(SALARY) FROM COMPANY;结果{20000,65000,85000,45000,10000}  
SELECT UNNSET(ARRAY_AGG(SALARY)) FROM COMPANY函数可将结果还原为多行情况
时间: 2024-11-10 10:31:30

2015第15周日PostgreSQL学习的相关文章

PostgreSQL学习手册(五) 函数和操作符

PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符:    常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:    下面是PostgreSQL中提供的比较操作符列表: 操作符 描述 < 小于 > 大于 <= 小于或等于 >= 大于或等于 = 等于 != 不等于 比较操作符可以用于所有可以比较的数据类型.所有比较操作符都是双目操作符,且返回boolean类型.除了比较操作符以外,我们还可以使用BETWEEN语句,如

PostgreSQL学习手册(常用数据类型)

一.数值类型: 下面是PostgreSQL所支持的数值类型的列表和简单说明: 名字 存储空间 描述 范围 smallint 2 字节 小范围整数 -32768 到 +32767 integer 4 字节 常用的整数 -2147483648 到 +2147483647 bigint 8 字节 大范围的整数 -9223372036854775808 到 9223372036854775807 decimal 变长 用户声明精度,精确 无限制 numeric 变长 用户声明精度,精确 无限制 real

UloidDWAW 2015.v8.15.1.11236+FluidDRAW1.2油路仿真软件

UloidDWAW 2015.v8.15.1.11236+FluidDRAW1.2油路仿真软件 UloidDWAW 2015.v8.15.1.11236 1DVD油路仿真软件 FluidDRAW1.2(气动回路图设计软件及气路.油路仿真软件,简体中文版 FESTO产品: FESTO-FluidDRAW 4t DC2004.12.20(气动回路图设计软件及气路.油路仿真软件,简体中文版) FESTO-FluidSIM v3.6 Full(气动.液压原理图绘制及气路.油路仿真软件,简体中文版) FE

2017年 1月 15日 指针 学习整理

有关指针的概念: 指针是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址. FIrst of all:我们需要明确目标 关于指针的学习以及使用我们需要搞清楚有关指针的四个内容:指针的类型,指针所指向的类型,指针的值(或者说叫指针所指向的内存区),还有指针本身所占用的内存区(指针也是一个特殊的变量吗,它肯定也是占据内存的).接下来让我们分别进行学习. 我们先来申明几个指针的例子: 1 int *ptr; 2 char *ptr; 3 int **ptr; 4 int (*ptr)[3];

张珺 2015/07/15 个人文档

姓名 张珺 日期 中蓝公寓蓝芳园D507,2015/07/15 主要工作及心得 今天,我对我们的软件进行了部分的黑盒测试. 遇到的问题 在对软件进行测试的过程中,我发现了我们软件在设计中出现的一些问题,有设计缺陷也要简单的代码错误. 解决方法 对于简单代码错误直接修改,对于设计问题我们通过组内讨论商讨解决办法,再对现有软件进行修改.

陈嘉 2015/07/15 个人文档

姓名 陈嘉 日期 2015/7/15 主要工作及心得 根据老师昨天提出最好使用测试软件进行测试的问题,尝试利用JUnit进行测试. 首先,我从同学那里考来一份eclipse使用JUnit测试的库.放到我们的NetBeans里进行测试,通过修改build path, 增加库等方式都不能成功运行TestCase. 后来我重新下载了JUnit在NetBeans中的插件,经过了很多次尝试终于成功运行. 下一个任务就是编写脚本,考虑到所有待测情况,和待测情的预期结果.进行测试.并在测试过程中发现了一些小问

15个快速学习苹果Swift编程语言的入门教程

要说今年最火的编程语言是什么.那就非Swift莫属了.当然最主要还是市场炒的比较热,加上官方Swift教程<The Swift Programming Language>在北航的大三学生发起在github上进行协同翻译获得了很高的人气,短短几天时间内<Swift中文版>第一版就发布.这真是不火不行了. Swift是苹果公司在WWDC2014上发布的全新开发语言.从演示视频及随后在appstore上线的标准文档看来,语法内容混合了OC,JS,Python,语法简单,使用方便,并可与O

postgresql学习记录1

数据库9.3.5,系统fedora20,不同系统操作略有不同. 使用yum 命令安装即可:sudo yum install postgresql,postgresql-server 安装完毕后系统中会创建一个postgres的用户,切换到这个用户后进行数据库的初始化: 1 initdb --encoding=UTF-8 --no-locale -D /var/lib/pgsql/data/ 或者使用postgresql-setup initdb 命令. 紧接着启动服务:pg_ctl -D /va

2015.05.15,学习,文献笔记-“电力行业水电站自动化标委会标准体系综述”

刘晓波,王德宽,毕亚雄,徐和平,汪毅. 电力行业水电站自动化标委会标准体系综述. 水电站机电技术. 2015.01 Vol.38 No.1 1. 引言 标准可分为3类:技术标准.管理标准.工作标准. 标准可分为4个级别:国家标准.行业标准.地方标准.企业标准. 国标.行标的标准化归口管理由中国电力企业联合会标准化管理中心负责.其下属15个全国标委会和55个行业标委会.电力行业水电站自动化标准化技术委员会是其下属的标委会之一,编号TC17. 目前电力行业水电站自动化标委会体系表内有标准63项,在有