Vamos a repasar la sentencia CREATE VIEW MySQL, esta tiene como finalidad crear tablas virtuales a partir de consultas SELECT a otras tablas.
Las vistas de una base de datos MySQL tienen la misma estructura de filas y columnas de una tabla, no puede haber una vista con el mismo nombre de una tabla.
Otras sentencias para trabajar con vistas en MySQL son:
- DROP VIEW MySQL: Eliminar una vista creada
- ALTER VIEW MySQL: Modificar las vistas de una base de datos
Sintaxis de CREATE VIEW MySQL
Veamos la sintaxis básica de esta función extraída de su web oficial:
1 2 |
CREATE [OR REPLACE] VIEW nombre_vista [column_list] AS consulta_SELECT |
Os explico el código superior para crear vistas en MySQL:
- OR REPLACE: Reemplaza una vista existente en caso de coincidir en nombre.
- nombre_vista: Nombre de la vista a crear.
- column_list: Listado de columnas a crear.
- consulta_SELECT: Consulta SELECT que queremos realizar para obtener la información que contendrá la vista.
Ventajas de usar vistas en MySQL
Enumero varias ventajas de las que soy consciente:
- Privacidad de la información: Mostramos a los usuarios con acceso a la vista únicamente la información que creamos conveniente. De esta manera no se tiene acceso a la tabla original con todas sus filas y columnas.
- Optimización del rendimiento de la base de datos: Podemos crear de querys sobre vistas complejas, es decir, vistas cuya información ha sido extraída y creada a través de unas SELECT complejas. De esta manera nos ahorramos estar ejecutando queys pesadas y atacamos directamente al resultado de dichas querys.
- Tablas de prueba: Para los desarrolladores que no tengan entornos de preproducción es muy útil usar las vistas para no tener miedo a perder información.
Ejemplo para crear vistas con CREATE VIEW MySQL
Os pongo un par de ejemplos para crear vistas en MySQL:
1 2 3 |
CREATE VIEW vista_futbolistas AS SELECT * FROM futbolistas; |
En el código superior estaríamos creando una vista con todas las filas y columnas de la tabla futbolistas.
1 2 3 4 5 |
CREATE VIEW vista_futbolistas AS SELECT futbolistas.id, nombre, apellidos FROM futbolistas INNER JOIN tarjetas_amarillas ON futbolistas.id = tarjetas_amarillas.id_futbolista; |
En este otro código estaríamos obteniendo una vista con los datos de los futbolistas que contienen tarjetas amarillas usando la sentencia INNER JOIN.
1 2 3 4 |
CREATE VIEW vista_futbolistas AS SELECT futbolistas.id, nombre, apellidos FROM futbolistas WHERE edad < 30; |
En este otro código estaríamos obteniendo una vista con los datos de los futbolistas que tienen menos de 30 años sentencia WHERE.