Outdated version of the documentation. Find the latest one here.

15.5. Lesson: Vistas

Cuando se escribe una consulta, debe pasar mucho tiempo y esfuerzo para formularla. Con vistas, se puede guardar la definición de una consulta SQL en una reutilizable ‘tabla virtual’

El objetivo de esta lección: Guardar una consulta como una vista.

15.5.1. Crear una vista

Se puede tratar una vista solo como una tabla, pero sus datos es de origen de una consulta. Vamos a hacer una vista simple basado en lo anterior:

create view roads_count_v as
  select count(people.name), streets.name
  from people, streets where people.street_id=streets.id
  group by people.street_id, streets.name;

Como puede ver Los cambios solo son en la parte Crea una vista roads_count_v as al inicio. Podemos ahora seleccionar datos de esa vista:

select * from roads_count_v;

Resultado:

 count |    name
-------+-------------
     1 | Main Road
     2 | High street
     1 | Low Street
(3 rows)

15.5.2. Modificar una vista

Una vista no está fija, y no contiene ‘datos reales’. Esto significa que puede cambiar fácilmente sin impactar en cualquier dato de la base de datos.

CREATE OR REPLACE VIEW roads_count_v AS
  SELECT count(people.name), streets.name
  FROM people, streets WHERE people.street_id=streets.id
  GROUP BY people.street_id, streets.name
  ORDER BY streets.name;

(Este ejemplo muestra también la mejor practica de convención de la utilización UPPER CASE para todas la palabras clave SQL.)

Verá que hemos añadido una cláusula ORDER BY para que las filas de nuestras vistas estén muy bien ordenados:

select * from roads_count_v;

 count |    name
-------+-------------
     2 | High street
     1 | Low Street
     1 | Main Road
(3 rows)

15.5.3. Eliminar una Vista

Si ya no necesita una vista, puede eliminarlo con este:

drop view roads_count_v;

15.5.4. In Conclusion

Usar vistas, puede guardar una consulta y acceder a los resultados como si fuera una tabla.

15.5.5. What’s Next?

Algunas veces, cuando cambia datos, quiere que los cambios tengan efecto entre otra parte en la base de datos. La siguiente lección mostrará cómo puede hacer esto.