【びゅー】

ビュー(データベース) とは?

最終更新:
💡 よく使うクエリを「仮想テーブル」として保存する

SELECTの問い合わせに名前を付け、テーブルのように参照できる仕組み。通常のビューは問い合わせの定義を保存し、参照時に元のデータから結果を求める。

📌 このページのポイント
定義を保存し、参照時に結果を求める 社員テーブル 名前 部署ID 田中 1 鈴木 1 佐藤 2 部署テーブル ID 部署 1 営業 2 開発 ビューの参照結果 営業部の社員 名前 部署 田中 営業 鈴木 営業 結果は保存しない 2つを結合し、営業部に絞る 保存するのはSELECTの定義 元データを読む、名前付きの窓口
社員と部署を結合し、営業部だけを選ぶ例。通常のビューが保存するのは問い合わせの定義で、結果のコピーではありません。
ひよこ ひよこ
テーブルとどう違うの?
ペンギン先生 ペンギン先生
テーブルにはデータが格納されるけれど、通常のビューが保存するのは問い合わせの定義だよ。たとえば CREATE VIEW active_users AS SELECT * FROM users WHERE status = 'active'; と定義すれば、active_usersをSELECTして条件に合う利用者を参照できるんだ。
ひよこ ひよこ
どんなときに使う?
ペンギン先生 ペンギン先生
複数のテーブルを結合する問い合わせや、レポート用の集計をまとめたいときだね。見せる列を限定する用途にも使えるけれど、元テーブルを直接読める権限があればそちらから見えてしまう。権限設定と合わせて使おう。
ひよこ ひよこ
ビューにすれば速くなる?
ペンギン先生 ペンギン先生
通常のビューは結果のキャッシュではないから、作るだけで速くなるわけではないよ。元の問い合わせやインデックスを確認しよう。結果を保存するマテリアライズドビューなら読み取りを速められる場合があるけれど、元データの変更を取り込む更新が必要なんだ。
ひよこ ひよこ
ビューの更新はできる?
ペンギン先生 ペンギン先生
製品とビューの定義によるよ。たとえばPostgreSQLでは、1つのテーブルを参照し、集約・DISTINCT・LIMITなどを含まないといった条件を満たすビューは自動更新できる。更新は元のテーブルへ反映されるんだ。複雑なビューは自動更新できない場合があり、対応するトリガーなどを別途用意する方法もあるよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ビュー」って出てきたら「SQLクエリを仮想テーブルとして保存する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Database View」 = データベースのビュー(視点)
💬 View(見方・視点)。テーブルのデータを特定の視点で見る仕組みだよ

参考資料

← 用語集にもどる