lunes, 21 de octubre de 2019

Creando una vista en MySQL

Diagrama EER

En este ejemplo vamos a implementar el código SQL para MySQL de la siguientes tablas que tenemos según el diagrama EER:



Lo que deseamos es crear una vista, esta vista actúa como una tabla que nosotros podemos personalizar a partir de consultas SELECT, son muy útiles para representar información de dos o más tablas que se relacionan en una sola. Ojo una vista no es una tabla propiamente dicha y solo se le puede aplicar SELECT, es decir solo ver sus datos, no se puede agregar, actualizar o eliminar registros de una vista, estos son registros de sus respectivas tablas y ahí se deben ejecutar dichas sentencias


Código SQL

Primero debemos tener la consulta que deseamos convertir en una vista, en este caso relacionar un pago con un inquilino, de forma que yo pueda ver el código del pago, el DNI del inquilino, sus nombres y apellidos en un solo campo, el pago que realizo, la fecha y hora (por separado) que lo hizo. El código resultante será el siguiente:

  1. SELECT
  2. pagos.idpagos,
  3. inquilinos.dni,
  4. CONCAT_WS(" ", inquilinos.nombres, inquilinos.paterno, inquilinos.materno),
  5. pagos.monto
  6. DATE(pagos.fecha),
  7. TIME(pagos.fecha)
  8. FROM pagos INNER JOIN inquilinos
  9. ON pagos.inquilino = inquilinos.idinquilinos

  • La función "CONCAT_WS" nos permite concatenar dos o más campos, indicando como primer parámetro el caracter de separación, en este caso el espacio en blanco (" ").
  • Podemos extraer la fecha de un DATETIME con la función YEAR.
  • Podemos extraer la hora de un DATETIME con la función TIME.
Ahora debemos asignar un "alias" a cada campo para tener un mejor orden:

  1. SELECT
  2. pagos.idpagos id,
  3. inquilinos.dni dni,
  4. CONCAT_WS(" ", inquilinos.nombres, inquilinos.paterno, inquilinos.materno) datos,
  5. pagos.monto monto
  6. DATE(pagos.fecha) fecha,
  7. TIME(pagos.fecha) hora
  8. FROM pagos INNER JOIN inquilinos
  9. ON pagos.inquilino = inquilinos.idinquilinos


Ahora podemos proceder a crear la vista anteponiendo lo siguiente: "CREATE VIEW ________ AS" de la siguiente manera

  1. CREATE VIEW pagos_view AS
  2. SELECT
  3. pagos.idpagos id,
  4. inquilinos.dni dni,
  5. CONCAT_WS(" ", inquilinos.nombres, inquilinos.paterno, inquilinos.materno) datos,
  6. pagos.monto monto,
  7. DATE(pagos.fecha) fecha,
  8. TIME(pagos.fecha) hora
  9. FROM pagos INNER JOIN inquilinos
  10. ON pagos.inquilino = inquilinos.idinquilinos

  • El nombre de la vista es "pagos_view".
  • Podemos aplicarle consultas SELECT donde el nombre de los campos son los "alias" que le elegimos.

Probando

  1. SELECT * FROM pagos_view;


Nos debe devolver algo así:

id dni datos monto fecha hora
1 31378082 LUISA PAUCAR NARRO 400.00 2019-10-21 21:34:35
2 43331042 AUGUSTO SOTOMAYOR NARVAJO 300.00 2019-10-18 18:30:00

No hay comentarios:

Publicar un comentario