DBAtlas · Atlas de operações de banco de dados

Criar / alterar uma view

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 tanto cria quanto altera. Para views atualizáveis sob certas condições, pode-se adicionar WITH CHECK OPTION.

PostgreSQL

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

DROP VIEW active_customer;

Com CREATE OR REPLACE, novas colunas só podem ser adicionadas no final; alterar o tipo/ordem de uma coluna exige DROP antes. Views simples são atualizáveis automaticamente.

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;

A definição é atualizada com CREATE OR REPLACE VIEW ou ALTER VIEW. O método de execução pode ser definido com ALGORITHM = MERGE/TEMPTABLE; WITH CHECK OPTION protege as views atualizáveis.

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+) cria/altera em uma única instrução. Em versões mais antigas, use CREATE primeiro e depois ALTER VIEW. A instrução da view deve ser a primeira do batch.

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 cria uma view somente leitura sobre uma coleção de origem e um pipeline de agregação. Não é possível gravar em views; para alterar a definição, remova e recrie (ou use collMod).

Redis

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

Não há suporte a views definidas sobre consultas. Para uma necessidade semelhante, mantenha chaves pré-calculadas ou crie um índice pesquisável com RediSearch.

Elasticsearch

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

Não há view SQL clássica; um alias filtrado é o equivalente mais próximo e aplica o filtro às consultas automaticamente. Para seleção de colunas, use filtragem de _source na consulta.

Abrir no DBAtlas →