Creación de vistas en SQL

Las vistas en SQL son una forma de almacenar una consulta como un objeto lógico en la base de datos. Esto permite a los usuarios acceder a la consulta como si fuera una tabla, lo que puede ser útil por varias razones.

La sintaxis básica de la sentencia CREATE VIEW en SQL es la siguiente,

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

Por ejemplo, una vista puede ayudar a simplificar las consultas de los usuarios, ya que pueden acceder a la información que necesitan a través de la vista en lugar de escribir una consulta compleja cada vez que necesiten esa información.

Las vistas también pueden ayudar a proteger la información de la base de datos, ya que permiten a los administradores controlar qué información pueden ver los usuarios y cómo pueden acceder a ella.

Por ejemplo, si desea crear una vista que muestre todos los clientes de una base de datos de ventas, podría ejecutar la siguiente consulta,

CREATE VIEW vClientes AS SELECT * FROM clientes

Esta consulta crearía una vista llamada «vClientes» que contiene todos los registros de la tabla «clientes». Una vez que se ha creado una vista, puede acceder a ella como si fuera una tabla normal en la base de datos.

Por ejemplo, para seleccionar todos los registros de la vista «customers», podría ejecutar la siguiente consulta,

SELECT * FROM vClientes

Esta consulta devolvería todos los registros de la vista «vClientes», lo que equivale a seleccionar todos los registros de la tabla «Clientes». Es importante tener en cuenta que las vistas no almacenan datos de forma permanente en la base de datos.

En su lugar, almacenan una consulta que se ejecuta cada vez que se accede a la misma. Esto significa que, si se realizan cambios en la tabla de base de datos después de crear una vista, esos cambios se reflejarán en la vista. Es decir, si se agrega un nuevo registro a la tabla «Clientes», ese registro también aparecerá en la vista «vClientes».

Vista predefinidas en SQL

En SQL, las vistas predefinidas son aquellas que proporcionan información sobre la estructura y el estado de una base de datos. Estas se crean automáticamente cuando se crea una base de datos y se actualizan cada vez que se realizan cambios en la estructura o el contenido de la base de datos.

Algunas de las vistas predefinidas más comunes en SQL son:

  • sys.databases. Contiene información sobre las bases de datos en el servidor.
  • sys.tables. Contiene información sobre las tablas en la base de datos actual.
  • sys.columns. Contiene información sobre las columnas en las tablas de la base de datos actual.
  • sys.indexes. Contiene información sobre los índices en las tablas de la base de datos actual.
  • sys.objects. Contiene información sobre todos los objetos en la base de datos actual.

Para acceder a estas vistas, se puede utilizar una sentencia SELECT simple. Por ejemplo, para obtener información sobre las tablas en la base de datos actual, se puede utilizar la siguiente consulta,

SELECT * FROM sys.tables;

Esta consulta devolverá todas las filas de la vista sys.tables, que contienen información sobre las tablas en la base de datos actual. Esta información puede incluir el nombre de la tabla, su fecha de creación y su tipo (si es una tabla o una vista).

Vistas materializadas

Las vistas materializadas son vistas que se almacenan físicamente en la base de datos y contienen los datos resultantes de una consulta. Se utilizan principalmente para mejorar el rendimiento de consultas complejas que se ejecutan frecuentemente.

Al almacenar los resultados de la consulta en una vista materializada, se pueden recuperar los datos de la vista en lugar de ejecutar la consulta compleja cada vez que se necesiten los datos. Esto puede reducir significativamente el tiempo de ejecución de la consulta y mejorar el rendimiento de la base de datos.

CREATE [OR REPLACE] MATERIALIZED VIEW AS SELECT <col>[,<col>…]
FROM <table> 
[WHERE <condición>]
[ORDER BY <order_col>[,<order_col>…]]; 

Una vez creadas, se pueden utilizar como cualquier otra tabla o vista en la base de datos.

Vistas recursivas

Las vistas recursivas son vistas que se refieren a sí mismas en su definición. Estas vistas se utilizan para trabajar con datos jerárquicos, como organigramas, árboles o grafos. Una vista recursiva se define mediante la cláusula RECURSIVE de la sentencia CREATE VIEW.

CREATE VIEW [ schema . ] view_name AS WITH RECURSIVE view_name (column_names) AS (SELECT ...) 
SELECT column_names FROM view_name;

☑️ Programar en SQL