sábado, 4 de junio de 2016

Vistas en MYSql Server (MariaDB)

Buenas tardes queridos lectores, en esta ocasión aprenderemos a crear vistas, pero primero veamos que es una vista:

Vista

Una vista en MySQL Server es una tabla virtual, con una estructura que nosotros definimos, pero sin datos, ya que los datos de esa tabla serán llenados a partir de una consulta, eso, también se puede realizar con procedimientos almacenados, pero esos los veremos mas adelante, pero la diferencia con ellos es que los procedimientos almacenados aceptan parámetros y las vistas no. Pero pasemos a la práctica que es lo que nos interesa, nos gusta y nos enseña.


Ejercicio 1:

Crear una VISTA, que nos muestre los equipos de México y el nombre de su estadio, capacidad y ciudad, utilizando la sentencia CREATE VIEW

CREATE VIEW
equipos_estadios_mexico
AS
select eq.idequipo, eq.abreviacion, eq.nombre, e.nombre as NombreEstadio, e.capacidad,e.ciudad
from equipos eq
inner join estadios e
on e.idestadio=eq.idestadio
where eq.codigopais='MX';

Al ejecutar esta sentencia, estamos creando la tabla temporal, cuyos datos son el resultado de la consulta que estamos creando, para confirmar lo que les digo queridos lectores, vamos a mostrar las tablas que tiene nuestra base de datos:

show tables


Como ven tenemos una nueva tabla creada llamada equipos_estadios_mexico, que se creo con la vista, para consultar la tabla, basta con hacer un SELECT en ella, de la siguiente manera:

select * from equipos_estadios_mexico

Y obtendremos el siguiente resultado:


Como ven, esa tabla virtual nos devuelve el resultado de la consulta, y es lo que se conoce como VISTA, pero podemos preguntarnos, si es una tabla virtual, ¿podremos borrar datos?, esa sería una buena y lógica pregunta, pues bien, la respuesta es no, para empezar la VISTA es una tabla virtual, no es una tabla real que llenamos de un formulario o de algún procedimiento, en segundo lugar la consulta viene de los JOINS, en tercer lugar el idequipo es una llave primaria y ya hay partidos registrados a ese equipo y si recordamos los primeros post, no podíamos borrar registros ligados para cuidar la integridad de la información, pero vamos a intentarlo, para que no quede todo en la teoría.

delete from equipos_estadios_mexico where idequipo=1


Ahora se podrán hacer otra pregunta: Al ser una tabla virtual ¿se podrá unir con otra mediante el uso de JOIN? Pues bien, esa es otra pregunta lógica e interesante y la respuesta es SI, podemos usar las VISTAS para unirla a otra tabla mediante los JOINS y para eso vamos a utilizar un ejemplo:

Ejercicio 2:

Mostrar la información de todos los partidos que ha jugado el equipo “Cruz Azul” en toda la historia de la base de datos, utilizando la VISTA equipos_estadios_mexico unida a la tabla PARTIDOS mediante el uso de JOIN

select p.num_partido, p.jornada, p.fecha, p.equipolocal, p.GolesLocal,  p.equipovisitante,p.golesvisitante, eem.nombreestadio, eem.capacidad
from partidos p
inner join equipos_estadios_mexico eem on eem.idequipo = p.idEquipoLocal
where (p.idEquipoLocal = 1 or p.idequipovisitante=1)


Como pueden ver queridos estudiantes, estamos uniendo la tabla PARTIDOS con la tabla virtual EQUIPOS_ESTADIOS_MEXICO, de esta manera nos ahorramos un JOIN más, y no ligamos tres tablas, sino solo dos. Veamos algunas de las ventajas de las vistas

Ventajas de las Vistas

  • Se almacenan en el servidos, por lo cual estarán siempre disponibles
  • Guardan una consulta compleja y la ejecución posterior se vuelve más fácil
  • Ocultan el nombre de las tablas y campos del que procede la información a otros desarrolladores.
  • Simplifican el uso de JOINS
Seguramente alguien sepa más ventajas del uso de las vistas, si es así pueden comentar.

Hasta aquí el post queridos lectores, si tienes alguna duda o comentario no vacilen en preguntar, estoy a sus ordenes para lo que gusten, no se olviden de dar +1, comentar, o dar clic en algún anuncio patrocinador.

Saludos!!





No hay comentarios.:

Publicar un comentario

Sinónimos de palabras similares en SQL SERVER

Buenas tardes. Hace un tiempo publique un post que hablaba sobre Sinónimos en SQL SERVER, sin embargo trataba de sinónimos en en objetos, e...