CREATE VIEWを知らんかった話

2025/10/15

sql 学習

t f B! P L
eyecatch データベースを仕事で使っていながら、CREATE VIEWという機能をこれまで全く知りませんでした。 仕事メンバーの人から教えてもらって、比較的データの多い定期バッチ処理や、 複数テーブルなど、複雑なデータ構造の場合に、非常に便利に使える機能ということらしいです。 一体この機能どんなものなの? という個人的興味も含めて、実際に使って試したわけではないですが、 現時点で分かったことをブログにまとめておきたいと思います。 なんと、SQLを使う上で、知らないと恥ずかしいレベルの機能だったらしいので、 急いで調べたんですが、この機能知らない人は、このブログを参考にして自己学習を進めてくださいまし。

SQLのCREATE VIEWとはどんな機能?

簡単に説明すると、仮想のテーブルを作って、何度も複雑な集計をしなくていいようにする機能。 要するに、「SQLの再利用・簡略化・制御のために、SELECT文にラベルをつけて保存する仕組み」です。 そして、特徴は以下の通りです。

複雑なSELECTを名前付きで保存できる機能

長いSQLを毎回書かなくていい。

仮想テーブルを作る機能

実データは持たず、呼び出すときに元テーブルから結果を生成する。

再利用・可読性向上のための仕組み

ビュー名を使うだけで定義済みのSELECTを呼び出せる。

セキュリティや制限にも使える

特定の列や条件を固定して公開したいときに役立つ(例:社員テーブルから給与列を除いたビュー)。

使い方

CREATE VIEWのSQLクエリサンプルです。

作成

CREATE VIEW @VIEWテーブル名 AS SELECT ... SELECT ... の箇所に、仮想テーブルに登録したい複雑な実際のテーブルからの取得データを記述します。

削除

CROP VIEW @VIEWテーブル名

呼び出し(参照)

普通のテーブルのように扱うことができます。 SELECT * FROM @VIEWテーブル名

作られたVIEW TABLEの一覧取得

SQLタイプによって、一覧の習得方法が違います。 MYSQLの場合 SELECT TABLE_NAME, VIEW_DEFINITION FROM information_schema.VIEWS WHERE TABLE_SCHEMA = '@データベース名'; または SHOW FULL TABLES IN @データベース名 WHERE TABLE_TYPE = 'VIEW'; SQLiteの場合 SELECT name, sql FROM sqlite_master WHERE type = 'view'; PostgreSQL の場合 SELECT viewname, definition FROM pg_views WHERE schemaname NOT IN ('pg_catalog', 'information_schema'); Oracle の場合 SELECT view_name, text FROM user_views; 作って、削除するまで保持しておけるのは、とても便利です。 データを元に、動的マスターテーブルなどを作るのに役立ちそうですね。 ちなみに、一度作ったCREATE VIEWテーブルのデータを更新するのは、できる場合とできない場合、PostgreSQLは全く変更不可など、 環境によって条件が異なるので、変更するぐらいなら、作り直すという方が、運用効率良さそうですね。

使えるSQLタイプ

一般的な、MYSQL、POSTGRESQL、SQLITE、他のSQLでも使えるようです。 SQLITEでも使えるのは、非常にありがたいですね。 そして知らなかったら損な機能であることもよくわかりました。 ちなみに、SQLの種類別に、CREATE VIEWが使えるようになったバージョンを調べておきました。

MYSQL

MySQL 5.0 (2005年リリース) から利用可能。 それ以前(4.x 系など)にはビューは存在せず、すべてサブクエリやJOINで書く必要がありました。

SQLite

SQLite 3.0 (2004年頃リリース) からサポート。 ただし更新可能ビューはサポートされず、INSTEAD OF トリガーで実現する必要があります。

PostgreSQL

最初期(PostgreSQL 6.0, 1997年頃) からビューはサポート済み。 かなり昔からある基本機能。

Oracle Database

Oracle 6 (1988年リリース) からビューをサポート。 商用DBの中では歴史が古く、早期から実装済み。

Microsoft SQL Server

SQL Server 6.0 (1995年リリース) からビューをサポート。 標準SQLに沿った形で利用可能。

あとがき

毎回、クソほど長いクエリを書いて、嫌気がさしていたエンジニア諸君。 CREATE VIEWを使って、便利に、安全に、高速に、処理をこなしましょう。 そして、自分の脳内にも、記憶CREATE VIEWが欲しくなった、今日のブログ記事執筆でした。 実際に使ってみて、その感想なども次回以降に書いてみたいと思います。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ