Categorías: MySQLPHP y MySQL

CREATE VIEW MySQL: Crear vistas en una base de datos

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:

Sintaxis de CREATE VIEW MySQL

Veamos la sintaxis básica de esta función extraída de su web oficial:

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:

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.

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.

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.

compartir
Publicado por
Aner Barrena