En muchas ocasiones, sobre todo cuando trabajamos en proyectos grandes, crear y ejecutar consultas puede convertirse en un problema de optimización. Para evitar esto, un buen gestor de base de datos provee diversos mecanismos. Uno de los cuales, analizaremos en este artículo: Las vistas o views ¿Listos para comenzar? ¡Manos a la obra!
Tabla de Contenido
¿Qué es una vista o view?
Una vista es una consulta temporal conocida también como tabla virtual, ya que no contiene datos en sí, en su lugar son un mecanismo abstracto para traer información de una o más tablas de manera que no sea necesario exponer la fuente original.
Las vistas conceden principalmente tres ventajas importantes:
- Facilitan el control de acceso: Al ser consideradas tablas (aunque no lo son) se pueden crear usuarios que tenga acceso a ellas únicamente, aislando dichos usuarios del resto de la base de datos. Algo muy típico, por ejemplo, con usuarios que solo ejecutan consultas.
- Mejoran el rendimiento: Se pueden hacer consultas sencillas a vistas que son el resultado de una consulta mucho más compleja.
- Cuidado de la integridad: Al usar las vistas en lugar de las tablas reales, se puede conservar mucho mejor la integridad de la base de datos.
¿Cómo se crean las vistas?
La sintaxis para crear una vista en MySQL, es la siguiente:
CREATE VIEW <Nombre de vista>
AS <Consulta>;
Donde:
- Nombre de vista: Es el nombre que le vamos a dar a la vista. Es recomendable que sea corto, y además no tenga espacios, ni caracteres especiales.
- Consulta: Es la consulta en la que se va a basar la vista.
Por ejemplo, con una tabla como esta:
Y estos datos:
Crearemos una vista que muestre nombre e id de los primeros 5 productos de la lista.
CREATE VIEW top5Productos
AS select proId, proNombre from productos order by proId limit 5;
Mostrar las vistas de una base de datos
Como las vistas son en teoría tablas, la mejor forma de visualizarlas es con el comando show tables.
show tables;
Como podemos observar en la imagen de abajo, no hay diferencia entre una tabla y una vista en el resultado.
Y si le hacemos un describe…
describe top5Productos;
Podemos observar que nos trae la definición de cada campo.
Cómo mostrar los resultados de una vista
Para mostrar el resultado de una vista, la tratamos igual que una consulta, es decir, con un SELECT. En nuestro caso, por ejemplo:
select proId, proNombre from top5Productos;
Producirá como resultados:
Cómo eliminar una vista
Para eliminar una vista que ya no necesitamos, utilizamos el comando DROP VIEW, seguido del nombre de la vista, por ejemplo:
drop view top5Productos;
Elimina la vista por completo.
Cómo modificar una vista
Para modificar una vista, utilizamos el comando CREATE VIEW seguido del nombre de la vista y la redefinición de la misma. Por ejemplo, modificaremos nuestra vista para incluir la cantidad y el precio.
ALTER VIEW top5Productos AS select proId, proNombre, proCantidad, proPrecio from productos order by proId limit 5;
Para corroborar que el cambio ha sido hecho, hagamos un simple SELECT.
select * from top5Productos;
Con eso, podemos ver los nuevos resultados.
Hagamos algunas vistas
Crear una vista que muestre: nombre, marca, cantidad y fecha de caducidad de los productos que caducan en el mes de julio.
CREATE VIEW caducaJulio AS select proNombre, proMarca, proCantidad, proCaducidad from productos where proCaducidad LIKE "%-07-%";
select * from caducaJulio;
Resultado:
Crear una vista que muestre la cantidad, nombre y contenido neto de los productos que están medidos en gramos.
CREATE VIEW enGramos AS select proCantidad, proNombre, proNeto from productos where proMedida = "Grs";
select * from enGramos;
Resultado:
Crear una vista que muestre nombre, cantidad y precio de los productos de la marca Coca Cola.
CREATE VIEW porMarca AS select proNombre, proCantidad, proPrecio from productos where proMarca = "Coca Cola";
select * from porMarca;
Resultado:
Y eso es todo por ahora ¿Te ha resultado? Déjanos saber en los comentarios aquí abajo, en nuestra cuenta de twitter @cablenaranja7 o en nuestra página de facebook.
Docente, IT Manager, Blogger & Developer. Escribo por diversión, educo por pasión. | Grandstanding is not my thing.
te falto el uso de replace view ….
Tienes razón. No lo había notado, después lo añado.
Gracias!
Buenas tardes, tienes algún comparativo para saber si las vistas tienen mejor performance en la rapidez de la devolución de datos respecto al sql original, ¿O en ese punto son equivalentes?
Saludos y gracias
Depende del tamaño de la muestra, en muestras pequeñas no hay mucha diferencia por lo general. Las vistas son mejores con muestras grandes, ahí si hay un ahorro.