Oracle研修5:集合演算子、結合、ビュー、サブクエリ

UNION :テーブルの足し算

matome_14_2015_12_20

<記入例>

【UNION ALL:)重複行を排除しない】

INTERSECT : テーブルの共通部分の選択

matome_15_2015_12_20

MINUS : レコードの引き算

matome_16_2015_12_20

INNER JOIN : 内部結合

*列の値が両方のテーブルに存在する行を取得

*複数の結合キーを指定するために、AND、OR を使うことも可。
*ON句は FROM と WHERE の間に書く。

 

LEFT [RIGHT] OUTER JOIN :外部結合

*基準となっているテーブルの全行を取得
((紐づけ先が無い)は NULL で表示)

 

CROSS JOIN :クロス結合

*結合したテーブルの全ての組み合わせが選択(実際ほとんど使われない)

内部結合の古い構文

*一応参考として記載。

ビュー

任意の SELECT 文の結果を仮想的な表として保存する機能。
(データそのものを保存するのではなく、データを取り出す SELECT 文だけを保存する方法)
【ビュー作成】

<作成例>

 

【ビューの中身を表示】

【ビューの上書き】

【 ビューの削除】

【ビュー利用時の注意点】
1.関数や式を使った SELECT 文に対してビューを設定する場合 → 別名をつける。

2.ビューに対する更新ルール(代表的な条件)

① SELECT 句に DISTINCT が含まれていない
② FROM 句に含まれるテーブルが 1 つだけである
③ GROUP BY 句を使用していない
④ HAVING 句を使用していない

 

サブクエリ:SELECT文の入れ子構造

「使い捨てのビュー」みたいなもの。(*SELECT 文をそのまま FROM 句に書く。)
*サブクエリ(subquery)の意味 →「下位の(sub)」の「問い合わせ(query)」

スカラ・サブクエリ:単一の戻り値を返す

*スカラ値( 1 行 1 列だけの戻り値)が書けるところにはどこにでも書ける。

↑今回は平均値と比較という例文。

平均値の戻り値は1つだけとなるのでWHERE句で比較可能。

 

相関サブクエリ:一部のレコード集合に限定した比較

テーブル全体ではなく、テーブルの一部のレコード集合に限定した比較をしたい場合に使用。

matome_17_2015_12_20

関連記事

Oracle研修1:データベースの概要とOracleの特徴、ユーザーと権限

Oracle研修2:SQLのデータ型。テーブルの作成、変更、削除。 列の追加、変更、削除。

Oracle研修3: INSERT 文、SELECT文、UPDATE 文、DELETE文、TRUNCATE 文

Oracle研修4:曖昧検索、集約関数、重複、グループ化、並び替え

Oracle研修6:インデックス, シーケンス, トランザクションとロック , セーブポイント