DBAtlas · Atlas de operaciones de bases de datos

Crear / modificar una vista

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 sirve tanto para crear como para modificar. Para vistas actualizables bajo ciertas condiciones, se puede añadir WITH CHECK OPTION.

PostgreSQL

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

DROP VIEW active_customer;

Con CREATE OR REPLACE solo se pueden añadir columnas nuevas al final; cambiar el tipo/orden de una columna requiere DROP primero. Las vistas simples son actualizables automáticamente.

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;

La definición se actualiza con CREATE OR REPLACE VIEW o ALTER VIEW. El método de ejecución se puede establecer con ALGORITHM = MERGE/TEMPTABLE; WITH CHECK OPTION protege las vistas actualizables.

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+) crea/modifica en una sola sentencia. En versiones anteriores, use primero CREATE y luego ALTER VIEW. La sentencia de la vista debe ser la primera del lote.

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 crea una vista de solo lectura sobre una colección de origen y un aggregation pipeline. No se puede escribir en las vistas; para cambiar la definición, elimínela y vuelva a crearla (o use collMod).

Redis

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

No se admiten vistas definidas sobre consultas. Para una necesidad similar, mantenga claves precalculadas o cree un índice consultable con RediSearch.

Elasticsearch

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

No hay vista SQL clásica; un alias filtrado es el equivalente más cercano y aplica el filtro a las consultas automáticamente. Para seleccionar columnas, use el filtrado de _source en la consulta.

Abrir en DBAtlas →