Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Vistas | Algunos Temas Adicionales
Técnicas Avanzadas en SQL

bookVistas

En el capítulo anterior, mencionamos un objeto llamado vista al hablar sobre los privilegios de usuario. Ahora consideremos este objeto con más detalle.

Una vista en SQL es una tabla virtual que se basa en el conjunto de resultados de una consulta SQL. Contiene filas y columnas al igual que una tabla real, y los campos en una vista provienen de una o más tablas reales en la base de datos.
Las vistas se utilizan por varias razones, incluyendo la simplificación de consultas complejas, el aumento de la seguridad al restringir el acceso a datos específicos y la presentación de datos en un formato específico.

Características clave de las vistas

  • Tabla virtual: Una vista no almacena datos físicamente. Obtiene sus datos de las tablas en las que se basa (llamadas tablas base);
  • Simplificación de consultas complejas: Las vistas pueden simplificar consultas SQL complejas al encapsularlas en una sola vista. Esto facilita el trabajo con combinaciones y agregaciones complejas;
  • Seguridad: Las vistas pueden restringir el acceso a filas o columnas específicas de datos, aumentando la seguridad. Se puede conceder acceso a la vista sin otorgar acceso a las tablas base subyacentes;
  • Consistencia: Las vistas pueden presentar una interfaz consistente e inalterada incluso cuando el esquema de la base de datos subyacente cambia.

Implementación

Crearemos una vista llamada account_activity_view basada en nuestras tablas BankAccounts y UserLogs que muestra el número de cuenta, el nombre del titular de la cuenta, el saldo y la acción más reciente realizada en la cuenta.

1234567891011121314151617181920212223242526
-- Create a view that shows account details along with their latest action CREATE OR REPLACE VIEW account_activity_view AS SELECT ba.account_number, -- Select the account number from the bankaccounts table ba.account_holder, -- Select the account holder's name from the bankaccounts table ba.balance, -- Select the balance from the bankaccounts table ul.action AS latest_action, -- Select the latest action from the userlogs table (alias as latest_action) ul.timestamp AS latest_action_time -- Select the timestamp of the latest action (alias as latest_action_time) FROM BankAccounts ba -- Main table: bankaccounts LEFT JOIN ( -- Subquery to get the most recent action for each account SELECT DISTINCT ON (account_number) account_number, -- Select the account number action, -- Select the action timestamp -- Select the timestamp FROM UserLogs ORDER BY account_number, -- Order by account number timestamp DESC -- Order by timestamp in descending order to get the latest action ) ul ON ba.account_number = ul.account_number; -- Join the subquery result with bankaccounts on account number -- Get data from the view SELECT * FROM account_activity_view;
copy

Ahora puedes utilizar esta vista en otras consultas sin tener que recrear la consulta compleja con joins, simplemente usando la vista creada como si fuera una tabla ordinaria.

Nota

Aunque podemos usar la vista como una tabla regular, ¡no es realmente una tabla física! Los datos de la vista no se almacenan en disco. En su lugar, cada vez que usamos la vista, su consulta se ejecuta y los datos resultantes se utilizan en la consulta principal.

question mark

¿Cuál de las siguientes afirmaciones describe mejor el aspecto de seguridad de las vistas?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 7

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 4.35

bookVistas

Desliza para mostrar el menú

En el capítulo anterior, mencionamos un objeto llamado vista al hablar sobre los privilegios de usuario. Ahora consideremos este objeto con más detalle.

Una vista en SQL es una tabla virtual que se basa en el conjunto de resultados de una consulta SQL. Contiene filas y columnas al igual que una tabla real, y los campos en una vista provienen de una o más tablas reales en la base de datos.
Las vistas se utilizan por varias razones, incluyendo la simplificación de consultas complejas, el aumento de la seguridad al restringir el acceso a datos específicos y la presentación de datos en un formato específico.

Características clave de las vistas

  • Tabla virtual: Una vista no almacena datos físicamente. Obtiene sus datos de las tablas en las que se basa (llamadas tablas base);
  • Simplificación de consultas complejas: Las vistas pueden simplificar consultas SQL complejas al encapsularlas en una sola vista. Esto facilita el trabajo con combinaciones y agregaciones complejas;
  • Seguridad: Las vistas pueden restringir el acceso a filas o columnas específicas de datos, aumentando la seguridad. Se puede conceder acceso a la vista sin otorgar acceso a las tablas base subyacentes;
  • Consistencia: Las vistas pueden presentar una interfaz consistente e inalterada incluso cuando el esquema de la base de datos subyacente cambia.

Implementación

Crearemos una vista llamada account_activity_view basada en nuestras tablas BankAccounts y UserLogs que muestra el número de cuenta, el nombre del titular de la cuenta, el saldo y la acción más reciente realizada en la cuenta.

1234567891011121314151617181920212223242526
-- Create a view that shows account details along with their latest action CREATE OR REPLACE VIEW account_activity_view AS SELECT ba.account_number, -- Select the account number from the bankaccounts table ba.account_holder, -- Select the account holder's name from the bankaccounts table ba.balance, -- Select the balance from the bankaccounts table ul.action AS latest_action, -- Select the latest action from the userlogs table (alias as latest_action) ul.timestamp AS latest_action_time -- Select the timestamp of the latest action (alias as latest_action_time) FROM BankAccounts ba -- Main table: bankaccounts LEFT JOIN ( -- Subquery to get the most recent action for each account SELECT DISTINCT ON (account_number) account_number, -- Select the account number action, -- Select the action timestamp -- Select the timestamp FROM UserLogs ORDER BY account_number, -- Order by account number timestamp DESC -- Order by timestamp in descending order to get the latest action ) ul ON ba.account_number = ul.account_number; -- Join the subquery result with bankaccounts on account number -- Get data from the view SELECT * FROM account_activity_view;
copy

Ahora puedes utilizar esta vista en otras consultas sin tener que recrear la consulta compleja con joins, simplemente usando la vista creada como si fuera una tabla ordinaria.

Nota

Aunque podemos usar la vista como una tabla regular, ¡no es realmente una tabla física! Los datos de la vista no se almacenan en disco. En su lugar, cada vez que usamos la vista, su consulta se ejecuta y los datos resultantes se utilizan en la consulta principal.

question mark

¿Cuál de las siguientes afirmaciones describe mejor el aspecto de seguridad de las vistas?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 7
some-alt