通常のビュー:論理的な再利用
ビューを作成して複雑なクエリをカプセル化し、レポートを簡素化して、列の一部への読み取りアクセスを提供します。
「通常のビュー:論理的な再利用」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。
ビューとは
ビューは保存された SELECT です。ビューをクエリするたびに、基になる SELECT が実行されます。名前付きクエリと同じように、これに対して JOIN、フィルタリング、集計を行えます。
CREATE VIEW active_users AS
SELECT id, email, full_name
FROM users
WHERE deleted_at IS NULL;ビューを使う
通常のテーブルと同じようにクエリします。
SELECT COUNT(*) FROM active_users;
SELECT * FROM active_users WHERE email LIKE '%@gmail.com';ビューは保存されない
保存されるのはビューの定義であり、結果ではありません。クエリするたびにビューが展開され、基になる SELECT が実行されます。クエリプランに関する考慮事項も同じです。
ビューを使う理由
- 再利用 — 複雑なクエリを 1 回定義する
- 抽象化 — 実装を隠す(3 つのテーブルを結合 → 「active_users」)
- セキュリティ — 基になるテーブルを公開せずに、ビューへの SELECT 権限を付与する
- 互換性 — スキーマを変更した後も、以前のクエリ形式を動作させる
CREATE OR REPLACE
ビューをその場で更新できます。ただし、列の型と順序が一致している場合に限ります。
CREATE OR REPLACE VIEW active_users AS
SELECT id, email, full_name, last_login
FROM users
WHERE deleted_at IS NULL;
-- ERROR if columns conflict; DROP VIEW + CREATE VIEW instead.JOIN と集計を使うビュー
よくある例は、ユーザーごとの集計です。
CREATE VIEW user_stats AS
SELECT u.id, u.email,
COUNT(o.id) AS order_count,
COALESCE(SUM(o.total), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email;更新可能なビュー
単純なビュー(単一テーブル、集計なし、DISTINCT なし)は更新可能です。ビューを通して INSERT/UPDATE/DELETE を実行できます。PostgreSQL は可能な場合、これらを自動的に更新します。
スキーマ修飾されたビュー
ユーティリティビューは専用のスキーマに配置します。
CREATE SCHEMA api;
CREATE VIEW api.users_public AS
SELECT id, email, full_name FROM users WHERE deleted_at IS NULL;
GRANT SELECT ON api.users_public TO app_reader;ビューと権限
デフォルトでは、ビューはクエリを実行するユーザーの権限で動作するため、そのユーザーには基になるテーブルへの権限も必要です。権限の低いユーザーが機密テーブルをクエリできるようにするには、代わりに SECURITY DEFINER 関数を使用してください。
パフォーマンスに関する考慮事項
プランナーはビューを展開し、通常の最適化を適用します。ビューの GROUP BY によって述語のプッシュダウンが妨げられる場合があります。EXPLAIN で問題が確認されたら、分割するか書き換えてください。
ビューの依存関係
ビューが依存している場合、基になるテーブルの削除はブロックされます。意図した場合に限り、DROP TABLE ... CASCADE を使用してください。依存するオブジェクトを一覧表示します。
SELECT * FROM pg_depend
WHERE refobjid = 'users'::REGCLASS;まとめ
ビューは再利用可能な SELECT です。
- 1 回定義して、何度もクエリする
- 抽象化とセキュリティ
- 単純な場合は更新可能
- クエリのたびに再実行されるため、組み込みのキャッシュはない
クイックチェック
ビューをクエリすると、その結果は保存されますか。
よくある質問
「通常のビュー:論理的な再利用」レッスンは無料ですか?
はい。「通常のビュー:論理的な再利用」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。
「通常のビュー:論理的な再利用」で何を学びますか?
ビューを作成して複雑なクエリをカプセル化し、レポートを簡素化して、列の一部への読み取りアクセスを提供します。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SQL Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「通常のビュー:論理的な再利用」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSQL Academyレッスンでコードを書いて実行できますか?
はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 通常のビュー:論理的な再利用
- 更新可能ビューとINSTEAD OFトリガー
- マテリアライズドビューとREFRESH戦略
- 事前集計を行うタイミング