PostgreSQL: administración de vistas

En este artículo, aprenderemos sobre las vistas y la administración de vistas en PostgreSQL. Le presentaremos el concepto de vistas, le mostraremos cómo se crean, modifican y eliminan las vistas. Y lo más importante, también veremos cómo se pueden implementar vistas en DBMS.

Una vista en PostgreSQL se puede definir como una tabla virtual que se deriva de tablas base subyacentes o vistas definidas previamente.

Es importante tener en cuenta los siguientes puntos:

  • Una vista no existe necesariamente en su forma física, es decir, sus tuplas no siempre se almacenan físicamente en la base de datos.
  • Esto limita las operaciones de actualización que se pueden aplicar a las vistas.
  • No hay absolutamente ninguna limitación para consultar una vista.

Creación de vistas de PostgreSQL:

Para especificar una vista, usamos una declaración de creación de vista .

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

La vista recibe un nombre de tabla virtual, una lista de nombres de atributos y una consulta para especificar el contenido de la vista.

Ejemplo:

Considere las siguientes tablas:

MESA DE LIBROS

COPIAS DE LIBROS

Libro_Autores

Ahora, a partir de las siguientes tablas, supongamos que deseamos crear una vista tal que podamos calcular el número de copias de cada libro que figura en la tabla de libros.

Esto puede hacerse de la siguiente manera:

CREATE VIEW BOOKCOUNT AS
SELECT Book_id,Title, Sum(No_of_copies) 
FROM BOOK A, BOOK_COPIES B
WHERE A.Book_id = B.Book_ID
GROUP BY A.BOOK_ID; 
Select * from BOOKCOUNT;

La salida del siguiente código será:

CUENTA DE LIBROS

Actualización de vistas de PostgreSQL:

Podemos cambiar la consulta de definición de una vista, usamos la declaración CREATE VIEW con la adición OR REPLACE de la siguiente manera:

CREATE OR REPLACE VIEW_NAME AS 
SELECT column1, column2....
FROM table_name
WHERE [condition];

Una actualización de una vista generalmente no es factible porque tiene algunos efectos secundarios en las tablas base subyacentes. Por ejemplo, si actualizamos la suma de copias de un libro en particular, tendremos que actualizar el número correspondiente de recuento de libros en la tabla de recuento de libros .

Por lo tanto, podemos decir que:

  • Una vista con una sola tabla de definición es actualizable si los atributos de la vista contienen la clave principal de la relación base, así como otros atributos que no tienen valores predeterminados especificados.
  • Las vistas definidas por la combinación natural de varias tablas no se pueden actualizar.
  • Las vistas definidas mediante funciones de agrupación y agregación no son actualizables.

CON OPCIÓN CHEQUE

Básicamente, esta cláusula se puede agregar al final de la definición de la vista si la vista debe actualizarse mediante las declaraciones INSERT, UPDATE, DELETE. Permitirá que el sistema rechace las operaciones que violen las reglas de SQL para las actualizaciones de la vista.

 En la vista dada BOOKCOUNT que hemos creado, no es actualizable.

Si intentamos actualizar la vista BOOKCOUNT , obtendremos el siguiente error:

Update BOOKCOUNT set title ='ADP' where Book_ID =1;

ERROR: la tabla de destino BOOKCOUNT no se puede actualizar.

De hecho, cualquiera de las vistas que contienen los siguientes elementos no son actualizables:

  • Funciones agregadas como MIN, MAX, SUM, AVG y COUNT.
  • DISTINTO
  • Cláusula GROUP BY.
  • Cláusula HAVING.
  • Cláusula UNION o UNION ALL.
  • Unión izquierda o unión externa.
  • Subconsulta en la cláusula SELECT o en la cláusula WHERE que hace referencia a la tabla aparecida en la cláusula FROM.
  • Referencia a la vista no actualizable en la cláusula FROM.
  • Referencia solo a valores literales.
  • Múltiples referencias a cualquier columna de la tabla base

Entonces crearemos otra vista. 

CREATE VIEW Example as
SELECT  title, Author_Name,
FROM BOOK, BOOK_AUTHORS
WHERE BOOK.Book_ID=BOOK_AUTHORS.Book_ID;

La vista creada será:

Ejemplo

Ahora actualicemos esta vista que hemos creado.

Ejemplo de actualización de vistas

UPDATE Example
SET Author_Name='Rahul'
WHERE Author_Name='Abhishek';

La vista actualizada se verá así:

Ejemplo

Eliminación de vistas de PostgreSQL

Para eliminar una vista existente en PostgreSQL, podemos usar la declaración DROP VIEW de la siguiente manera:

DROP VIEW [ IF EXISTS ] view_name;

Si un nombre de vista especificado no existe, obviamente resultará en un error. Entonces, para evitar errores, usamos la opción IF EXISTS.

Ejemplo: Para eliminar la vista que hemos creado utilizaremos el siguiente comando

DROP VIEW IF EXISTS BOOKCOUNT;

Vamos a comprobar la salida para el mismo

Después de eliminar la vista, cuando intentamos recuperar las columnas de la vista, da un error que dice que la vista a la que se hace referencia no existe.

https://www.geeksforgeeks.org/postgresql-recursive-query/

Publicación traducida automáticamente

Artículo escrito por aashvi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *