DBAtlas · Atlas für Datenbankbetrieb

View anlegen / ändern

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 legt an und ändert zugleich. Für unter bestimmten Bedingungen aktualisierbare Views kann WITH CHECK OPTION ergänzt werden.

PostgreSQL

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

DROP VIEW active_customer;

Mit CREATE OR REPLACE können neue Spalten nur am Ende hinzugefügt werden; das Ändern von Typ/Reihenfolge einer Spalte erfordert vorher DROP. Einfache Views sind automatisch aktualisierbar.

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;

Die Definition wird mit CREATE OR REPLACE VIEW oder ALTER VIEW aktualisiert. Die Ausführungsmethode lässt sich mit ALGORITHM = MERGE/TEMPTABLE festlegen; WITH CHECK OPTION schützt aktualisierbare Views.

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+) legt an/ändert in einem einzigen Statement. In älteren Versionen zuerst CREATE, danach ALTER VIEW verwenden. Das View-Statement muss das erste Statement im Batch sein.

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 legt eine schreibgeschützte View über einer Quell-Collection und einer Aggregation Pipeline an. In Views kann nicht geschrieben werden; zum Ändern der Definition löschen und neu anlegen (oder collMod verwenden).

Redis

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

Über Abfragen definierte Views werden nicht unterstützt. Für einen ähnlichen Bedarf vorberechnete Keys vorhalten oder mit RediSearch einen durchsuchbaren Index aufbauen.

Elasticsearch

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

Eine klassische SQL-View gibt es nicht; ein gefilterter Alias kommt dem am nächsten und wendet den Filter automatisch auf Abfragen an. Für die Spaltenauswahl _source-Filtering in der Abfrage verwenden.

In DBAtlas öffnen →