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

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

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-23 12:20:15
SELECT
名称
SELECT — 从表或视图中取出若干行. 

语法
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
    expression [ AS name ] [, ...]
    [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ]
    [ FROM table [ alias ] [, ...] ]
    [ WHERE condition ]
    [ GROUP BY column [, ...] ]
    [ HAVING condition [, ...] ]
    [ { UNION [ ALL ] | INTERSECT | EXCEPT } select ]
    [ ORDER BY column [ ASC | DESC | USING operator ] [, ...] ]
    [ FOR UPDATE [ OF class_name [, ...] ] ]
    LIMIT { count | ALL } [ { OFFSET | , } start ]
输入
expression 
表的列/字段名或一个表达式. 
name 
使用 AS 子句为一个列/字段或一个表达式声明另一个名称.这个名称主要用于标记输出列用于显示。它可以在 ORDER BY 和 GROUP BY 子句里代表列/字段的值.但是 name 不能用于 WHERE 或 HAVING 子句;用表达式代替. 
TEMPORARY, TEMP 
如果声明了 TEMPORARY 或 TEMP,该表是在这次会话中唯一的,并且将在会话结束后自动删除。 
new_table 
如果声明了 INTO TABLE 子句,查询的结果将存储在指出名称的另一个表中.目标表(new_table)将被自动创建并且在此命令执行之前不应该存在。请参考 SELECT INTO 获取更多信息. 
注意: CREATE TABLE AS 语句也将从选择查询中创建新表.
table 
FORM 子句引用的一个现存的表的名称. 
alias 
正在处理的表 table 的别名,用于缩写或消除一个表内部联合时的含混. 
condition 
一个结果为真或假布尔表达式.参阅 WHERE 子句获取更多信息. 
column 
表的列/字段的名称. 
select 
除了 ORDER BY 和 LIMIT 子句外的所有特性的选择语句. 
输出
Rows 
查询返回的所有结果集的行. 
count 
查询返回的行的记数. 

描述SELECT 将从一个或更多表中返回记录行。选择的侯选行是满足 WHERE 条件的所有行。或者如果省略了 WHERE 语句则选择表中的所有行.(参阅WHERE Clause.) 
DISTINCT 将从选择出来的结果集中删除所有的重复的行。ALL (缺省)将返回所有侯选行,包括重复的行。 

DISTINCT ON 删除匹配所有表达式的行,只保留每个重复集的第一行。注意这里每个重复集的"第一行"是不可预料的,除非我们用 ORDER BY 来保证我们希望的行最先出现。例如, 

        SELECT DISTINCT ON (location) location, time, report
        FROM weatherReports
        ORDER BY location, time DESC;
检索出每个地区的最近的天气预报。但是如果我们没有使用 ORDER BY 来强制每个地区按时间值降续排列,我们得到的将是每个地区的不可预料的时间的报告。 
检索出每个地区的最近的天气预报。但是如果我们没有使用 ORDER BY 来强制每个地区按时间值降续排列,我们得到的将是每个地区的不可预料的时间的报告。( GROUP BY 子句.) 

HAVING 允许只选择那些满足声明条件的行组(参阅 HAVING 子句.) 

ORDER BY 导致返回的行按照声明的顺序排列.如果没有给出 ORDER BY,输出的行的顺序将以系统认为开销最小的顺序产生.(参阅 ORDER BY 子句.) 

UNION 操作符允许结果集是那些涉及到的查询所返回的行的集合。(参阅 UNION 子句。) 

INTERSECT 给出两个查询公共的行。(参阅  INTERSECT 子句。) 

EXCEPT 给出存在于第一个查询而不存在于第二个查询的行。(参阅 EXCEPT 子句。) 

FOR UPDATE 子句允许 SELECT 语句对选出的行执行排他锁。 

LIMIT 子句允许给用户返回一个查询生成的结果的子集。(参阅 LIMIT 子句。) 
  

你必须有 SELECT 权限用来从表中读取数值 (参阅 GRANT/REVOKE 语句). 

WHERE 子句
可选的 WHERE 条件有如下常见的形式: 
WHERE boolean_expr
boolean_expr 可以包含任意个得出布尔值的表达式。通常表达式会是 
     expr cond_op expr
或 
     log_op expr
这里 cond_op 可以是下面之一:=,<,<=,>,>=,<> 或条件操作符象 ALL,ANY,IN,LIKE等,或者用户定义的操作符,而 log_op 可以为: AND,OR,NOT.SELECT 将忽略所有 WHERE 条件不为 TRUE 的行.
GROUP BY 子句
GROUP BY 声明一个分了组的表,该表源于应用使用下面的子句: 
GROUP BY column [, ...]
GROUP BY 将把所有在组合了的列上共享同样的值的行压缩成一行。如果存在聚集函数,这些聚集函数将计算每个组的所有行,并且为每个组计算一个独立的值(如果没有 GROUP BY,聚集函数对选出的所有行计算出一个数值)。存在 GROUP BY 时,除了在聚集函数里面,SELECT 输出表达式对任何非组合列的引用都是非法的,因为对一个非组合列会有多于一个可能的返回值。 
一个在 GROUP BY 里面的条目还可以是输出列的名称或者序号(SELECT 表达式),或者是一个从输入列的数值形成的任意表达式.当存在语义模糊时,一个 GROUP BY 名称将被解释成一个输入列/字段名称而不是一个输出列/字段名称.

HAVING 子句
可选的 HAVING 条件有如下形式: 
HAVING cond_expr
这里 cond_expr 与为 WHERE 子句里声明的相同. 
HAVING 子句声明一个从前面的子句的结果集中去除了一些不符合 cond_expr 组后分组的表.HAVING 与 WHERE 不同:WHERE 在应用 GROUP BY 之前过滤出单独的行,而 HAVING 过滤由 GROUP BY 创建的行. 

在 cond_expr 里引用的每个列/字段应该清晰地指明一个组的列/字段,除非引用在一个聚集函数里。 
 

ORDER BY 子句
ORDER BY column [ ASC | DESC ] [, ...]
column 既可以是一个列/字段名也可以是一个序数。 
序数指的是列/字段按顺序(从左到右)的位置.这个特性可以使得对没有一个合适名称的列/字段的排序成为可能.这一点可能永远没有用,因为总是可以通过AS 子句给一个要计算的列/字段赋予一个名称,例如: 

S

[1] [2] [3]  下一页


Tags:PostgreSQL,手册,用户,手册,SQL,命令,SELECT
[数据载入中...] [返回上一页] [打 印]