《七周七数据库》一一2.3 第2天:高级查询、代码和规则

    xiaoxiao2024-01-09  152

    本节书摘来自异步社区出版社《七周七数据库》一书中的第2章,第2.3节,作者: 【美】Eric Redmond,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    2.3 第2天:高级查询、代码和规则

    七周七数据库昨天,我们看到了如何定义数据库表,然后插入数据,更新和删除行,以及读数据。今天我们将更深入探讨PostgreSQL查询数据的各种方法。

    我们将看到如何对相似的值归类,在服务器端执行代码,并使用视图(view)和规则(rule)创建自定义接口。在这一天的最后,我们将利用PostgreSQL的一个扩展包翻转表头。

    2.3.1 聚合函数

    聚合查询按照一些共同的标准将多行的结果分组。它可以简单到统计一张表的行数,或计算某些数值列的平均值。它们是强大的SQL工具,也很有趣。

    我们来尝试一些聚合函数,但在此之前我们需要在数据库中有更多的数据。在countries表中加入你自己的国家,在cities表中加入你自己的城市,并以自己的地址作为场地(这里称为My Place),然后添加一些记录到events表中。

    下面是一个简单的SQL技巧:在子查询里通过更加可读的title来获得venue_id,而不用直接给出venue_id。如果Moby(白鲸)正在Crystal Ballroom上演,可以这样设置venue_id:

    INSERT INTO events (title, starts, ends, venue_id)  VALUES ('Moby', '2012-02-06 21:00', '2012-02-06 23:00', (   SELECT venue_id   FROM venues   WHERE name = 'Crystal Ballroom'  ) );

    用以下数据填入events表(要在PostgreSQL里输入Valentine's Day,可以用双撇号转义,如Heaven"s Gate)。

    title    |   starts    |    ends     |   venue ---------------------+---------------------+---------------------+----------------- Wedding       | 2012-02-26 21:00:00 | 2012-02-26 23:00:00 | Voodoo Donuts Dinner with Mom   | 2012-02-26 18:00:00 | 2012-02-26 20:30:00 | My Place Valentine’s Day   | 2012-02-14 00:00:00 | 2012-02-14 23:59:00 |

    设置好数据后,我们尝试一些聚合查询。最简单的聚合函数是count(),它的意思不言自明。下面统计所有包含Day关键字的标题(注:%是LIKE搜索中的通配符),可以得到结果为3。

    SELECT count(title) FROM events WHERE title LIKE '
    转载请注明原文地址: https://yun.8miu.com/read-117699.html
    最新回复(0)