当前位置:早雪网网络学院编程文档数据库技术Postgresql → PostgreSQL7.0手册-用户手册-19. SQL命令-SELECT

PostgreSQL7.0手册-用户手册-19. SQL命令-SELECT

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-23 12:20:15
10 | Bavaria Atelier  | 1981-11-11 | Drama
 Bed Knobs and Broomsticks | 111 | Walt Disney      |            | Musical
(17 rows)
统计用 kind 分组的所有电影和组的列/字段的 len (长度)的和: 
SELECT kind, SUM(len) AS total FROM films GROUP BY kind;

   kind   | total
----------+-------
 Action   | 07:34
 Comedy   | 02:58
 Drama    | 14:28
 Musical  | 06:42
 Romantic | 04:38
(5 rows)
统计所有电影(films),组的列/字段 len (长度)的和,用 kind 分组并且显示小于5小时的组总和: 
SELECT kind, SUM(len) AS total
    FROM films
    GROUP BY kind
    HAVING SUM(len) < INTERVAL '5 hour';

 kind     | total
----------+-------
 Comedy   | 02:58
 Romantic | 04:38
(2 rows)
下面两个例子是根据第二列 (name)的内容对单独的结果排序的经典的方法. 
SELECT * FROM distributors ORDER BY name;
SELECT * FROM distributors ORDER BY 2;

 did |       name
-----+------------------
 109 | 20th Century Fox
 110 | Bavaria Atelier
 101 | British Lion
 107 | Columbia
 102 | Jean Luc Godard
 113 | Luso films
 104 | Mosfilm
 103 | Paramount
 106 | Toho
 105 | United Artists
 111 | Walt Disney
 112 | Warner Bros.
 108 | Westward
(13 rows)
这个例子演示如何获得表 distributors 和 actors 的联合,只将每个表中以字母 W 开头的取出来.因为只取了不相关的行,所以关键字 ALL 被省略了: 
distributors:               actors:
 did |     name              id |     name
-----+--------------        ----+----------------
 108 | Westward               1 | Woody Allen
 111 | Walt Disney            2 | Warren Beatty
 112 | Warner Bros.           3 | Walter Matthau
 ...                         ...

SELECT distributors.name
    FROM   distributors
    WHERE  distributors.name LIKE 'W%'
UNION
SELECT actors.name
    FROM   actors
    WHERE  actors.name LIKE 'W%'

      name
----------------
 Walt Disney
 Walter Matthau
 Warner Bros.
 Warren Beatty
 Westward
 Woody Allen
兼容性
扩展
Postgres 允许我们在一个查询里省略 FROM 子句。这个特性是从最初的 PostQuel 查询语言里保留下来的: 
SELECT distributors.* WHERE name = 'Westwood';

 did | name
-----+----------
 108 | Westward
SQL92
SELECT 子句
在SQL92 规范里,可选的关键字 "AS" 是多余的,可以忽略掉而不对语句产生任何影响.Postgres 分析器在重命名列/字段时需要这个关键字,因为类型扩展的特性会导致上下文语意不清. 
DISTINCT ON 语法不是 SQL92 的标准。LIMIT 和 OFFSET 也不是。 

在 SQL92 里,一个 ORDER BY 子句只可以使用在结果列名称或者序号上,而 GROUP BY 子句只能用于输入列/字段上.Postgres 把这两个子句都扩展为允许另一种选择(但是如果出现冲突则使用标准的解释).Postgres 还允许两个子句声明任意的表达式.请注意,在表达式里出现的名称将总是被当做输入列/字段的名称,而不是结果列/字段名称.

UNION 子句
SQL92 的 UNION 语法允许一个附加的 CORRESPONDING BY 子句: 
 
table_query UNION [ALL]
    [CORRESPONDING [BY (column [,...])]]
    table_query
CORRESPONDING BY 目前还不被 Postgres 支持.

上一页  [1] [2] [3] 

[数据载入中...] [返回上一页] [打 印]