0Pricing
SQL Academy · レッスン

通常のビュー:論理的な再利用

ビューを作成して複雑なクエリをカプセル化し、レポートを簡素化して、列の一部への読み取りアクセスを提供します。

「通常のビュー:論理的な再利用」は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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 通常のビュー:論理的な再利用
  2. 更新可能ビューとINSTEAD OFトリガー
  3. マテリアライズドビューとREFRESH戦略
  4. 事前集計を行うタイミング
← SQL Academyに戻る