DBAtlas · データベース運用アトラス

ビューを作成/変更

Oracle

CREATE OR REPLACE VIEW active_customer AS
SELECT id, name, email FROM customer WHERE status = 'ACTIVE';

-- Drop
DROP VIEW active_customer;

CREATE OR REPLACE VIEW で作成と変更の両方を行う。特定の条件下で更新可能なビューには WITH CHECK OPTION を付けられる。

PostgreSQL

CREATE OR REPLACE VIEW active_customer AS
SELECT id, name, email FROM customer WHERE status = 'ACTIVE';

DROP VIEW active_customer;

CREATE OR REPLACE では新しい列は末尾にのみ追加できる。列の型/順序を変更するには先に DROP が必要。単純なビューは自動的に更新可能。

MySQL

CREATE OR REPLACE VIEW active_customer AS
SELECT id, name, email FROM customer WHERE status = 'ACTIVE';

-- Modify
ALTER VIEW active_customer AS SELECT id, name FROM customer;
DROP VIEW active_customer;

定義は CREATE OR REPLACE VIEW または ALTER VIEW で更新する。実行方式は ALGORITHM = MERGE/TEMPTABLE で設定できる。WITH CHECK OPTION は更新可能なビューを保護する。

SQL Server

CREATE OR ALTER VIEW active_customer AS
SELECT id, name, email FROM customer WHERE status = 'ACTIVE';

DROP VIEW active_customer;

CREATE OR ALTER VIEW(2016 SP1+)は単一の文で作成/変更する。古いバージョンでは先に CREATE し、その後 ALTER VIEW を使用する。ビューの文はバッチ内の最初の文である必要がある。

MongoDB

// Read-only view (on top of an aggregation pipeline)
db.createView("active_customer", "customer", [ { $match: { status: "ACTIVE" } }, { $project: { name: 1, email: 1 } } ]);

db.active_customer.drop();

db.createView はソースコレクションと集計パイプラインに基づく読み取り専用のビューを作成する。ビューには書き込めない。定義を変更するには削除して再作成する(または collMod を使用する)。

Redis

# Not applicable: Redis has no view concept; derived views are provided on the application
# side or with RedisJSON/RediSearch indexes.

クエリで定義するビューはサポートされない。同様の用途には、事前計算したキーを保持するか、RediSearch で検索可能なインデックスを構築する。

Elasticsearch

# Filtered logical view with an alias
POST _aliases
{ "actions": [ { "add": { "index": "customer", "alias": "active_customer",
  "filter": { "term": { "status": "ACTIVE" } } } } ] }

従来の SQL ビューはない。フィルタ付きエイリアスが最も近く、クエリに自動的にフィルタを適用する。列の選択にはクエリで _source フィルタリングを使用する。

DBAtlas で開く →