ビューを作成/変更
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 フィルタリングを使用する。