ビューとテーブル
テーブルを作る(CREATE TABLE
)、検索する(SELECT
)、更新する(INSERT
,DELETE
,UPDATE
)を学んだが、新しい知識としてビュー(VIEW
)を学ぶ。
ビューとは、『SELECT
文を保存したもの』と覚えておけば良さそう。テーブルではデータを保存するが、ビューではSELECT
文を記録する、つまり検索文を記憶したようなもの。検索文を記憶しておくと、その実行結果としてはテーブルデータが返ってくる。よって見た目としてはテーブルのデータと変わりないと言うことになる。
ビューの旨味
データを保持しないため記録域の節約ができる
SELECT
文によって表現できるテーブルの内容であれば、ビューを保持しておくだけで済むため、無駄に重複するデータを保持しなくて良くなる。作業効率が上がる
頻繁に使う
SELECT
文を記録しておくことで、入力の手間が省けたり、体系化されたテーブルであればビューの使い回しもできる。
ビューを使う
ビューを作る
- コマンド:
CREATE VIEW ビュー名 (ビュー列名,..) AS SELECT文;
- 実行例
ビューを実行する
使う時はFROM
句にビュー名を指定してあげる。
- 実行例
ビューを削除する
- コマンド:
DROP VIEW ビュー名;
- 実行例
サブクエリ
サブクエリとはその名の通り、『下位(Sub)の問い合わせ(Query)』なので1段レベルが下のSELECT
文のこと。ビューはSELECT
文を記録しFROM
句に突っ込んでいたが、サブクエリではビューを用いずFROM
句に直接SELECT
文をつっこむ。
- 実行例
スカラ・サブクエリ
スカラ・サブクエリとは、「1行1列の戻り値を返す」と言う制限がついたサブクエリ。つまり返り値として単一の値が返ってくる。戻り値が単一の値なので、比較演算子の入力として利用できる。
例えば、『各レコードの値が、当該カラムの平均よりも高いものだけを抽出したい』というような時にスカラ・サブクエリは効果を発揮する。
上記をしたい場合には、AVG
関数を用いると良いがWHERE
句には使えない。そこでスカラ・サブクエリとして単一の値として利用する。
上記のようにスカラ・サブクエリは、定数やカラム名を書く場所に対して利用することができる。
相関サブクエリ
小分けにしたグループ内で比較する時に使用する。グループ分けした後に、各レコードデータとグループ内の平均を比較して条件に合うものだけを表示するみたいなことができるようになる。
例えば、下記のようなテーブルにおいて、各レコードが自身の商品分類の平均を超えるようなレコードを抽出する時を考える。商品分類毎の平均自体はDML文①のように抽出できる。
よって、どうにかDML文①をグループ毎のスカラ・サブクエリとして抽出できれば良い。それに対応させるようにDML文を構築したのが下記となる。