Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
May 24, 2021 12:46 am GMT

Bases de datos: Vistas

Photo by luis gomes from Pexels

En algun momento de nuestras vidas como desarrolladores, nos hemos topado con SQL.

Hemos hecho consultas agradables:

SELECT * FROM usersWHERE age > 18;

Otras mas complejas

SELECT * FROM usersINNER JOIN postsON (posts.user_id = users.id)WHERE users.age > 18;

Y mas complejas aun

SELECT * FROM employeesINNER JOIN departmentsON (departments.id = employees.dep_id)WHERE salary > (    SELECT AVG(salary) FROM employees);

Y en algun momento te habras preguntado: Hay una forma mas sencilla que estar copiando y ejecutando la misma sentencia SQL una y otra vez?

Bueno, esto ya esta respondido en el titulo

Introduccion a Vistas

Las vistas son tablas virtuales creadas a partir de una consulta almacenada.
Este mecanismo de SQL nos permite definir, una unica vez, una consulta (query) y usarla tantas veces como deseemos.

Como crear una vista

Esto depende del motor de bases de datos usado.
Yo uso PostgreSQL, pero vos podes usar el que quieras (solo vas a tener que buscar la sintaxis)

CREATE VIEW <nombre_de_la_vista> AS    <SENTENCIA_sql>

Como usar una vista

Dado que se crea una tabla virtual, podemos consultarla como tal a traves del select.

SELECT * FROM <nombre_de_la_vista>

Veamos un ejemplo

Mi tabla users tiene los siguiente campos:

  • id
  • username
  • email
  • password
  • age

Necesito obtener el username y el email de aquellos usuarios cuya edad sea mayor a 18.

Antes, hubieramos realizado una consulta SQL normal de toda la vida.

SELECT username, email FROM usersWHERE age > 18;

Pero ahora que sabemos vistas, las cosas se ponen mas interesantes

CREATE VIEW users_legal_age AS     SELECT username, email FROM users    WHERE age > 18;SELECT * FROM users_legal_age

Lo interesante de las vistas es que, dado que son tablas, podemos seguir lanzando distintas consultas sin necesidad de modificar la query original.

Si yo quisiera en este momento obtener, ademas de los usuarios mayores de edad, aquellos cuyo username contiene la cadena 'admin', solo tendria que hacer esto:

SELECT * FROM users_legal_ageWHERE username LIKE '%admin%'

Y nuestra query original se mantiene intacta.

Recomendacion para operaciones con mas tablas

Si tenemos la siguiente vista

CREATE VIEW view_posts_users AS    SELECT * FROM users    INNER JOIN posts    ON (posts.user_id = users.id)    WHERE users.age > 18;

Debemos de tener cuidado con los campos que tienen el mismo nombre.

Si users y posts tienen campos cuyos nombres son iguales, debemos de asignarle un alias a esos campos para evitar conflictos.

Cuando debo usar vistas?

Lo recomendado es que lo uses cuando tenes una query compleja y que requiere ser usada mas de una vez.

Aca tiene sentido crear una:

CREATE VIEW view_admin_users_legal_age AS    SELECT first_name, last_name    FROM users    WHERE age > 18 AND username LIKE '%admin%';

Aca no:

CREATE VIEW view_list_users AS    SELECT * FROM users;

Esto solo fue una introduccion, lo demas, lo dejo a tu imaginacion para que sigas practicando y probando


Original Link: https://dev.to/gareisdev/bases-de-datos-vistas-2eo6

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To