CREAR VISTA

Utilice el comando CREATE VIEW para crear una vista. Una vista no se materializa físicamente. En lugar de ello, el sistema genera automáticamente una regla de recuperación de consulta-reescritura (query-rewrites) para el soporte de operaciones de recuperación en la vista. Las vistas son de solo lectura. El sistema no permite inguna inserción, actualización o supresión en una vista.

Sintaxis

Sintaxis para la creación de una vista:
CREATE [OR REPLACE] VIEW <viewname> AS SELECT <query>

Entradas

El comando CREATE VIEW toma las siguientes entradas:
Tabla 1. Entradas de CREATE VIEW
Entrada Descripción
OR REPLACE Si aún no existe una vista con el nombre especificado, se crea una nueva vista independientemente de si se ha especificado la frase OR REPLACE. Sin embargo, si ya existe una vista con el nombre especificado y la frase OR REPLACE:
  • Se ha especificado, la vista se sobrescribe.
  • No se ha especificado, se emite un mensaje de error y la vista no se sobrescribe.
Los privilegios otorgado para la vista se retienen.
<viewname> Nombre de la vista que se quiere crear.
<query> La consulta SQL que determina las columnas y las filas de la vista. Para más información, véase SELECT (para recuperar filas).

Resultados

El comando CREATE VIEW tiene las siguientes salidas:
Tabla 2. Salidas de CREATE VIEW
Resultado Descripción
CREATE VIEW La vista se ha creado correctamente.
ERROR: Relation 'view' already exists En la base de datos ya existe una vista con el nombre especificado:

Privilegios

Es necesario ser el usuario administrativo o el propietario de la base de datos o esquema, o la cuenta debe tener el privilegio Create View. Es necesario tener privilegios Select para la tabla base de la vista. Para sustituir una vista, también hay que tener el privilegio Alter para la vista o la clase de objeto View.

Uso

A continuación se proporciona el uso de muestra:
  • Crear una vista que contenga todas las películas de comedia:
    MYDB.SCH1(USER)=> CREATE VIEW kinds AS
           SELECT *
           FROM films
           WHERE kind = 'Comedy';
  • Mostrar la vista:
    MYDB.SCH1(USER)=> SELECT * FROM kinds; 
       code  | title                     | did | date_prod  | kind    | len
       ------+---------------------------+-----+------------+---------+--
       C_701 | There's a Girl in my Soup | 107 | 1970-06-11 | Comedy  | 
    01:36:00
       UA502 | Bananas                   | 105 | 1971-07-13 | Comedy  | 
    01:22:00
  • Sustituir la vista pero retener los privilegios que se otorgaran para la vista original:
    MYDB.SCH1(USER)=> CREATE OR REPLACE VIEW kinds AS
           SELECT *
           FROM films
           WHERE kind = 'Action';