從表或視圖檢索行。
語法
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 | 向優化程序提供的注釋嵌入式提示,用于選擇執行計劃。 |