Важно

Prevod je zajednički napor :ref:`možete se pridružiti `. Ova stranica je trenutno prevedena na |napredak prevođenja|.

15.5. Lekcija: Pogledi

Kada pišete upit, morate potrošiti mnogo vremena i truda na njegovo formulisanje. Pomoću pogleda možete sačuvati definiciju SQL upita u „virtuelnu tabelu“ za višekratnu upotrebu.

Cilj ove lekcije: Sačuvati upit kao pogled.

15.5.1. Pravljenje pogleda

Sa pogledom možete raditi baš kao sa tabelom, ali njegovi podaci potiču iz upita. Napravimo jednostavan pogled na osnovu gore navedenog:

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;

Kao što vidite, jedina promena je deo create view roads_count_v as na početku. Sada možemo izabrati podatke iz tog pogleda:

select * from roads_count_v;

Rezultat:

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

15.5.2. Izmena pogleda

Pogled nije fiksan i ne sadrži nikakve „stvarne podatke“. To znači da ga možete lako promeniti bez uticaja na bilo koje podatke u svojoj bazi podataka:

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;

(Ovaj primer takođe prikazuje konvenciju najbolje prakse korišćenja VELIKIH SLOVA za sve SQL ključne reči.)

Videćete da smo dodali ORDER BY klauzulu tako da su redovi našeg pogleda lepo sortirani:

select * from roads_count_v;

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

15.5.3. Brisanje pogleda

Ako vam pogled više nije potreban, možete ga obrisati ovako:

drop view roads_count_v;

15.5.4. Zaključak

Pomoću pogleda možete sačuvati upit i pristupiti njegovim rezultatima kao da je tabela.

15.5.5. Šta je sledeće?

Ponekad, pri promeni podataka, želite da vaše izmene imaju efekte na drugim mestima u bazi podataka. Sledeća lekcija će vam pokazati kako da to uradite.