PostgreSQL - VISTAS

Las vistas son pseudo-tablas. Es decir, no son tablas reales; sin embargo, aparecen como tablas ordinarias para SELECT. Una vista puede representar un subconjunto de una tabla real, seleccionando ciertas columnas o ciertas filas de una tabla ordinaria. Una vista puede incluso representar tablas unidas. Debido a que a las vistas se les asignan permisos separados, puede usarlas para restringir el acceso a la tabla de modo que los usuarios vean solo filas o columnas específicas de una tabla.

Una vista puede contener todas las filas de una tabla o filas seleccionadas de una o más tablas. Se puede crear una vista a partir de una o varias tablas, lo que depende de la consulta PostgreSQL escrita para crear una vista.

Las vistas, que son una especie de tablas virtuales, permiten a los usuarios hacer lo siguiente:

  • Estructurar los datos de una manera que los usuarios o clases de usuarios encuentren natural o intuitiva.

  • Restrinja el acceso a los datos de modo que un usuario solo pueda ver datos limitados en lugar de una tabla completa.

  • Resuma datos de varias tablas, que se pueden utilizar para generar informes.

Dado que las vistas no son tablas ordinarias, es posible que no pueda ejecutar una instrucción DELETE, INSERT o UPDATE en una vista. Sin embargo, puede crear una REGLA para corregir este problema de utilizar DELETE, INSERT o UPDATE en una vista.

Creando Vistas

Las vistas de PostgreSQL se crean utilizando el CREATE VIEWdeclaración. Las vistas de PostgreSQL se pueden crear a partir de una sola tabla, varias tablas u otra vista.

La sintaxis básica de CREATE VIEW es la siguiente:

CREATE [TEMP | TEMPORARY] VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

Puede incluir varias tablas en su declaración SELECT de una manera muy similar a como las usa en una consulta SELECT de PostgreSQL normal. Si la palabra clave opcional TEMP o TEMPORARY está presente, la vista se creará en el espacio temporal. Las vistas temporales se eliminan automáticamente al final de la sesión actual.

Ejemplo

Considere, la tabla EMPRESA tiene los siguientes registros:

id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  3 | Teddy |  23 | Norway     |  20000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000

Ahora, el siguiente es un ejemplo para crear una vista desde la tabla EMPRESA. Esta vista se usaría para tener solo unas pocas columnas de la tabla EMPRESA:

testdb=# CREATE VIEW COMPANY_VIEW AS
SELECT ID, NAME, AGE
FROM  COMPANY;

Ahora, puede consultar COMPANY_VIEW de forma similar a como consulta una tabla real. A continuación se muestra el ejemplo:

testdb=# SELECT * FROM COMPANY_VIEW;

Esto produciría el siguiente resultado:

id | name  | age
----+-------+-----
  1 | Paul  |  32
  2 | Allen |  25
  3 | Teddy |  23
  4 | Mark  |  25
  5 | David |  27
  6 | Kim   |  22
  7 | James |  24
(7 rows)

Descartar vistas

Para eliminar una vista, simplemente use la instrucción DROP VIEW con el view_name. La sintaxis básica de DROP VIEW es la siguiente:

testdb=# DROP VIEW view_name;

El siguiente comando eliminará la vista COMPANY_VIEW, que creamos en la última sección:

testdb=# DROP VIEW COMPANY_VIEW;