SELECT
从表或视图检索行。
语法
SELECT [ optimizer_hint ] [ ALL | DISTINCT ]
* | expression [ AS output_name ] [, ...]
FROM from_item [, ...]
[ WHERE condition ]
[ [ START WITH start_expression ]
CONNECT BY { PRIOR parent_expr = child_expr |
child_expr = PRIOR parent_expr }
[ ORDER SIBLINGS BY expression [ ASC | DESC ] [, ...] ] ]
[ GROUP BY { expression | ROLLUP ( expr_list ) |
CUBE ( expr_list ) | GROUPING SETS ( expr_list ) } [, ...]
[ LEVEL ] ]
[ HAVING condition [, ...] ]
[ { UNION [ ALL ] | INTERSECT | MINUS } select ]
[ ORDER BY expression [ ASC | DESC ] [, ...] ]
[ FOR UPDATE [WAIT n|NOWAIT|SKIP LOCKED]]
其中 from_item
可以是下列项之一:
table_name[@dblink ] [ alias ]
( select ) alias
from_item [ NATURAL ] join_type from_item
[ ON join_condition | USING ( join_column [, ...] ) ]
说明
SELECT
从一个或多个表检索行。SELECT 的常规处理如下所示:
- 将计算
FROM
列表中的所有元素。(FROM
列表中的每个元素均为真实表或虚拟表。)如果在FROM
列表中指定了多个元素,则它们将交叉联接在一起。(请参见下面的FROM
子句。) - 如果指定了
WHERE
子句,则从输出中排除所有不满足条件的行。(请参见下面的WHERE
子句。) - 如果指定了
GROUP BY
子句,则输出将分成与一个或多个值匹配的一组行。如果存在HAVING
子句,则会排除不满足给定条件的组。(请参见下面的GROUP BY
子句和HAVING
子句。) - 通过使用运算符
UNION
、INTERSECT
和MINUS
,可以组合多个SELECT
语句的输出以形成单个结果集。UNION
运算符返回一个或两个结果集中的所有行。INTERSECT
运算符返回完全位于这两个结果集中的所有行。MINUS
运算符返回第一个结果集中的行,但不返回第二个结果集中的行。在上述所有三种情况下,都会排除重复的行。对于UNION
运算符,如果指定了ALL
,则不会排除重复项。(请参见下面的UNION
子句、INTERSECT
子句和MINUS
子句。) - 针对每个所选行使用
SELECT
输出表达式计算实际输出行。(请参见下面的SELECT
列表。) CONNECT BY
子句用于选择具有分层关系的数据。此类数据在行之间具有父子关系。(请参见CONNECT BY
子句。)- 如果指定了
ORDER BY
子句,则返回的行将按指定顺序排序。如果未给定ORDER BY
,则按系统生成速度最快的顺序返回行。(请参见下面的ORDER BY
子句。) DISTINCT
排除结果中的重复行。ALL
(默认值)将返回所有候选行,包括重复行。(请参见下面的DISTINCT
子句。)FOR UPDATE
子句使SELECT
语句锁定所选行以防止并发更新。(请参见下面的FOR UPDATE
子句。)
您必须对表具有 SELECT
特权才能读取其值。使用 FOR UPDATE
也需要 UPDATE
特权。
参数
参数 | 说明 |
---|---|
optimizer_hint | 向优化程序提供的注释嵌入式提示,用于选择执行计划。 |
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论