Modelado físico relacional de bases de datos
¿Qué son las Vistas?
Una vista en SQL es una consulta almacenada que puedes tratar como si fuera una tabla. Las vistas no almacenan datos por sí mismas, sino que muestran datos dinámicos obtenidos de las tablas subyacentes. Esto es útil para simplificar consultas complejas o para ocultar ciertas columnas a los usuarios.
¿Por qué usar Vistas?
Las vistas son útiles cuando:
- Quieres ocultar datos sensibles a ciertos usuarios.
- Necesitas simplificar consultas complejas.
- Quieres reutilizar consultas comunes sin tener que escribirlas repetidamente.
NOTA: Las vistas no almacenan datos físicamente, por lo que no ocupan espacio adicional en la base de datos.
Cada vez que se ejecuta una vista, se realiza la consulta subyacente en tiempo real.
Comandos para trabajar con Vistas
Existen principalmente dos comandos para trabajar con vistas en SQL:
CREATE VIEW: para crear una vista.DROP VIEW: para eliminar una vista.ALTER VIEW: para modificar una vista.
Comando CREATE VIEW
El comando CREATE VIEW se utiliza para crear una nueva vista. La vista se define a través de una consulta SELECT que puede incluir una o más tablas.
Sintaxis básica:
1CREATE VIEW nombre_vista AS 2SELECT columna1, columna2, ... 3FROM tabla 4WHERE condición;
Ejemplo:
Supongamos que tenemos una tabla llamada estudiantes y queremos crear una vista que solo muestre los estudiantes mayores de 18 años:
1CREATE VIEW vista_estudiantes_mayores AS 2SELECT nombre, edad, clase 3FROM estudiantes 4WHERE edad > 18;
En este ejemplo, creamos una vista llamada vista_estudiantes_mayores que muestra el nombre, la edad y la clase de los estudiantes cuya edad es mayor a 18. Ahora, en lugar de escribir la consulta SELECT completa cada vez, podemos simplemente consultar la vista vista_estudiantes_mayores.
Comando DROP VIEW
El comando DROP VIEW se utiliza para eliminar una vista de la base de datos. Una vista eliminada deja de existir y no se puede usar.
Sintaxis básica:
1DROP VIEW nombre_vista;
Ejemplo:
1DROP VIEW vista_estudiantes_mayores;
Este comando elimina la vista vista_estudiantes_mayores que creamos anteriormente.
Consultar una Vista
Una vez que has creado una vista, puedes utilizarla en consultas de la misma manera que usarías una tabla.
Sintaxis para consultar una vista:
1SELECT * FROM nombre_vista;
Ejemplo:
1SELECT * FROM vista_estudiantes_mayores;
Este comando selecciona todos los registros de la vista vista_estudiantes_mayores. La vista devolverá solo los estudiantes mayores de 18 años, como se definió anteriormente.
Actualización de Vistas
Las vistas generalmente no se pueden modificar directamente (si son complejas), pero si son simples (por ejemplo, aquellas que representan una sola tabla), puedes insertar, actualizar o eliminar datos a través de ellas, aunque con ciertas restricciones.
Ejemplo de actualización de una vista simple:
Supón que tienes una vista que muestra estudiantes de la tabla estudiantes:
1CREATE VIEW vista_estudiantes AS 2SELECT id, nombre, edad 3FROM estudiantes;
Puedes realizar una actualización directamente en esta vista si modificas solo los campos que se pueden cambiar (en este caso, edad):
1UPDATE vista_estudiantes 2SET edad = 23 3WHERE nombre = 'Juan';
Este comando actualizará la edad del estudiante llamado 'Juan' en la tabla original, ya que la vista refleja la tabla estudiantes.
El comando:
1UPDATE vista_estudiantes 2SET edad = 23 3WHERE nombre = 'Juan';
🔍 Compatibilidad por motor:
| Motor | ¿Compatible? | Notas importantes |
|---|---|---|
| MySQL | ⚠️ | Solo si la vista es actualizable, es decir, basada en una única tabla, sin JOIN, GROUP BY, funciones agregadas, etc. |
| PostgreSQL | ⚠️ | Igual que MySQL. También puedes definir la vista como actualizable o con un INSTEAD OF trigger. |
| SQLite | ❌ | No permite UPDATE sobre vistas, a menos que se haya definido un INSTEAD OF trigger manualmente. |
| Oracle | ⚠️ | Soporta UPDATE en vistas si son actualizables, o puedes usar INSTEAD OF triggers. |
| SQL Server | ⚠️ | Soporta UPDATE sobre vistas si son simples. Para vistas más complejas, necesitas INSTEAD OF triggers. |
🧩 ¿Cuándo es una vista actualizable?
Una vista puede ser actualizable si:
✅ Está basada en una sola tabla
✅ No usa DISTINCT, GROUP BY, HAVING, agregaciones o UNION
✅ No usa expresiones como SUM(edad) o CASE
✅ No renombra columnas con alias complejos
4. Ventajas de Usar Vistas
- Simplificación: Las vistas permiten consultas complejas en una sola línea, facilitando el uso y la comprensión.
- Seguridad: Puedes ocultar datos sensibles y permitir que los usuarios accedan solo a lo que necesitan ver.
- Mantenimiento: Si cambian los datos de las tablas subyacentes, no es necesario modificar las consultas, solo la vista.
. Comando ALTER VIEW (Modificación de vistas)
Al igual que con las tablas, puedes modificar una vista con el comando ALTER VIEW. Aunque el soporte para este comando depende del sistema de base de datos, algunos permiten modificar la consulta de una vista existente.
Sintaxis básica:
1ALTER VIEW nombre_vista AS 2SELECT columna1, columna2, ... 3FROM tabla 4WHERE condición;
Ejemplo:
Para cambiar la vista estudiantes_mayores para que también incluya la clase de los estudiantes:
1ALTER VIEW estudiantes_mayores AS 2SELECT nombre, edad, clase 3FROM estudiantes 4WHERE edad > 18;
- Loading...