《Oracle命令语法速查》【 SELECT 】

表、ビューに格納されている値を取り出す


┬───────────────────┬→
└ WITH ┬ query_name AS ( 副問合せ ) ┬┘
        └ ← , ───────────┘
[ 副問合せのブロックに名前を指定する                                  ]
→ SELECT [ hint ] { DISTINCT | UNIQUE | ALL } →
[   DISTINCT : 結果に全ての列の値が同じ行が複数ある場合に1行だけ返す ]
[   UNIQUE   : DISTINCT と同様                                        ]
[   ALL      : 重複行も含め全ての行を返す(デフォルト)                 ]
→┬ *  ──────────────────────────┬→
  │  [ 全ての表の全ての列を取り出す ]                    │
  └┬ [ スキーマ . ] ┬ 表名 ──────────┬ . *  ┬┘
    │                ├ ビュー名   ───────┤      │
    │                └ マテリアライズドビュー名 ┘      │
    │[ 指定した表の全ての列を取り出す ]                │
    ├ 式 [ [ AS ] 列別名 ] ───────────────┤
    │[ 特定の列や式の値を取り出す ]                    │
    ├ query_name ────────────────────┤
    └ ← , ───────────────────────┘
→ FROM (*1) →
→┬───────┬→
  └ WHERE 条件式 ┘
  [ 変更対象の行を抽出する条件を指定する ]
→┬─────────────────────┬→
  ├ [ START WITH 条件式 ] CONNECT BY 条件式  ┤
  │[ 階層順に行を戻す際に使用する ]        │
  └ GROUP BY ┬ 式 ─┬ [ HAVING 条件式 ] ]  ┘
              └ ← , ┘
    [ 指定された式の値に基づき結果をグループ化し抽出する ]
→ [ ┬ UNION  [ ALL ] ┬ SELECT文 ] →
     ├ INTERSECT      ┤
     └ MINUS          ┘
[ 他の SELECT文の結果と集合演算を行い結合した結果を返す ]
→ [ ORDER BY ┬ { 式 | 列別名 | 列位置 } [ ASC | DESC ]  ┬ ] →
              └ ← , ──────────────────┘
[ 結果の順序を指定する ]
→┬────────────────────────────────┬→
  └ FOR UPDATE [ OF [┬ [ スキーマ . ] ┬──────┬ 列名 ┬] ] ┘
                      │                ├ 表名 .     ┤      │
                      │                └ ビュー名 . ┘      │
                      └ ← , ────────────────┘
[ 選択された行をロックする ]
→┬─────────────────────────────┬ ;
  ├ NOWAIT   ────────────────────────┤
  │[ ロック取得に失敗した場合に待機しない           ]      │
  └ WAIT 数値  ───────────────────────┘
    [ ロック取得に失敗した場合に指定秒数だけ待機する ]

(*1)
→┬ ONLY (*2)  ──┬→
  ├ (*2) [ 別名 ]  ┤
  ├ ( (*3) ) ───┤
  ├ (*3)   ────┤
  └ ← , ─────┘

(*2)
→┬ [ スキーマ . ] 表名 [┬ PARTITION ( パーティション名 ) ────┬] ┬→
  │                      ├ SUBPARTITION ( サブパーティション名 )  ┤  │
  │                      └ @ データベースリンク名 ────────┘  │
  │[ 削除対象となる表を指定する               ]                      │
  ├ [ スキーマ . ] ビュー名 [ @ データベースリンク名 ] ────────┤
  │[ 削除対象となるビュー / マテリアライズドビューを指定する ]       │
  ├ ( 副問合せ ) [ WITH ┬ READ ONLY ─────────────┬ ]  ─┤
  │                     └ CHECK OPTION [ CONSTRAINT 制約名 ]  ┘      │
  ├ query_name ────────────────────────────┤
  └ TABLE ( 副問合せ ) [ (+) ] ────────────────────┘

(*3)
→ (*2)┬ [ ┬ INNER ────────┬ ] JOIN (*1) ┬ ON 条件式 ──────┬┬→
       │   └┬ LEFT   ┬ [ OUTER ] ┘             └ USING ( ┬ 列名 ┬ )  ┘│
       │     ├ RIGHT  ┤                                     └ ← , ┘      │
       │     └ FULL   ┘                                                     │
       ├ CROSS JOIN ─────────────────────────────┤
       └ NATURAL [ ┬ INNER ────────┬ ] JOIN (*1)  ─────────┘
                    └┬ LEFT   ┬ [ OUTER ] ┘
                      ├ RIGHT  ┤
                      └ FULL   ┘