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 →