Expresiones de tabla en el SQL Server
Explicación sobre los siguientes temas:
Sub-consultas en SQL Server:
-Auto-contenidas,
-Correlacionadas,
-Usando exists,
Expresiones de Tabla en:
-Vistas,
-Funciones de tabla en línea,
-Tablas derivadas,
-Common Table Expressions,
y operadores Unión, Except, Intersect
¿Qué es una Vista?
Una vista en SQL Server es básicamente una consulta guardada que se puede tratar como una tabla. Es una forma de presentar datos en un formato específico sin duplicar físicamente los datos almacenados en las tablas de la base de datos.
¿Por qué usar Vistas?
Las vistas se utilizan por varias razones, incluyendo:
- Simplificación de Consultas: Las vistas pueden simplificar consultas complejas al encapsular la lógica de la consulta en una sola definición.
- Seguridad: Puedes usar vistas para restringir el acceso a ciertas columnas o filas de una tabla, mostrando solo los datos necesarios a usuarios específicos.
- Consistencia y Reutilización: Las vistas garantizan que todos los usuarios vean los datos de la misma manera y permiten la reutilización de consultas complejas en múltiples lugares.
- Mantenimiento: Cambiar la definición de una vista es más fácil que actualizar múltiples consultas en diferentes partes de una aplicación.
¿Cómo se Crea una Vista?
Crear una vista es similar a escribir una consulta SQL, pero en lugar de ejecutar la consulta, se guarda con un nombre específico. Aquí tienes un ejemplo:
CREATE VIEW VistaEmpleadosActivos
AS
SELECT EmpID, Nombre, Apellido, Departamento
FROM Empleados
WHERE Estado = ‘Activo’;
En este ejemplo, VistaEmpleadosActivos es una vista que muestra solo los empleados que están activos.
Tipos de Vistas
- Vistas Simples: Basadas en una sola tabla y no incluyen funciones agregadas, subconsultas o uniones.
- Vistas Complejas: Involucran múltiples tablas y pueden incluir uniones, funciones agregadas, subconsultas, etc.
- Vistas Indexadas: También conocidas como vistas materializadas. Estas vistas almacenan los resultados de la consulta en disco, lo que puede mejorar el rendimiento de consultas complejas.
Ventajas de las Vistas
- Facilidad de Uso: Las vistas pueden simplificar la vida de los desarrolladores y usuarios, proporcionando una interfaz fácil de usar para datos complejos.
- Seguridad: Las vistas pueden ayudar a controlar el acceso a datos sensibles al mostrar solo lo necesario.
- Flexibilidad: Las vistas pueden cambiar sin afectar la estructura subyacente de las tablas de la base de datos.
Ejemplo de Uso
Supongamos que tienes una base de datos de ventas y quieres que los empleados solo vean las ventas del mes actual. Podrías crear una vista como esta:
CREATE VIEW VentasMesActual
AS
SELECT VentaID, ClienteID, Monto, Fecha
FROM Ventas
WHERE MONTH(Fecha) = MONTH(GETDATE()) AND YEAR(Fecha) = YEAR(GETDATE());
Ahora, los empleados pueden consultar VentasMesActual y ver solo las ventas del mes actual sin necesidad de escribir la consulta completa cada vez.
Consideraciones
- Desempeño: Aunque las vistas pueden mejorar la seguridad y la simplicidad, pueden impactar el rendimiento si no se usan correctamente. Por ejemplo, vistas complejas con muchas uniones pueden ralentizar las consultas.
- Actualización de Datos: No todas las vistas son actualizables. Las vistas simples que se basan en una sola tabla generalmente son actualizables, pero las vistas complejas pueden no serlo.