Uvod

U radu sa bazama podataka često imamo situaciju da su podaci raspoređeni u više tabela. Da bismo dobili korisne informacije, moramo pisati složene SQL upite sa više JOIN operacija.  Međutim, šta ako često koristimo isti upit? Da li moramo svaki put ponovo da ga pišemo? Odgovor je: ne. Tada koristimo pogled (VIEW).


1. Šta je pogled (VIEW)?

Pogled (VIEW) je virtuelna tabela koja nastaje kao rezultat jednog SQL upita.

  • Ne čuva podatke fizički (osim u posebnim slučajevima - o tome drugi put)

  • Čuva samo SQL upit

  • Uvek prikazuje aktuelne podatke iz tabela

Pogled možemo zamisliti kao:  “sačuvan SELECT upit koji se ponaša kao tabela”


2. Kreiranje pogleda

Sintaksa:
CREATE VIEW naziv_pogleda
AS
SELECT ...
FROM ...
WHERE ...;

3. Primeri (na bazi A13_DVD)

Primer 1: Jednostavan pogled

Prikaz svih filmova sa žanrom:

CREATE VIEW vw_FilmZanr
AS
SELECT f.Naziv, z.NazivZanra
FROM Film f
JOIN Zanr z ON f.ZanrID = z.ZanrID;

Korišćenje:

SELECT * FROM vw_FilmZanr;

Primer 2: Pogled sa više tabela

Film + glumci:

CREATE VIEW vw_FilmGlumci
AS
SELECT f.Naziv AS Film, g.Ime, g.Prezime
FROM Film f
JOIN Uloga u ON f.FilmID = u.FilmID
JOIN Glumac g ON u.GlumacID = g.GlumacID;

Primer 3: Pogled sa uslovom

Samo filmovi posle 2000. godine:

CREATE VIEW vw_NoviFilmovi
AS
SELECT Naziv, DatumIzlaska
FROM Film
WHERE DatumIzlaska > '2000-01-01';

4. Izmena pogleda

Ako želimo da promenimo pogled:

ALTER VIEW vw_FilmZanr
AS
SELECT f.Naziv, z.NazivZanra, f.Trajanje
FROM Film f
JOIN Zanr z ON f.ZanrID = z.ZanrID;

5. Brisanje (odbacivanje) pogleda

Sintaksa:
DROP VIEW naziv_pogleda;
Primer:
DROP VIEW vw_FilmZanr;

Zadatak 1 - Kreirati pogled koji prikazuje: naziv filma, datum izlaska

Zadatak 2 - Kreirati pogled koji prikazuje: ime i prezime glumca, naziv filma

Zadatak 3 - Kreirati pogled koji prikazuje sve producente.

Zadatak 4 - Kreirati pogled koji prikazuje samo filmove iz žanra 1.

Zadatak 5 - Izmeniti jedan pogled tako da prikazuje dodatnu kolonu.

Zadatak 6 - Obrisati jedan pogled.


Zadatak 1 - Kreirati pogled: naziv filma, trajanje, žanr

Zadatak 2 - Kreirati pogled koji prikazuje broj filmova po žanru.

Zadatak 3 - Kreirati pogled koji prikazuje samo glumce iz određenog mesta.

Zadatak 4 - Kreirati pogled koji spaja: film, glumca, tip uloge


Vežba 1
CREATE VIEW vw_Filmovi
AS
SELECT Naziv, DatumIzlaska
FROM Film;

Vežba 2
CREATE VIEW vw_GlumciFilm
AS
SELECT g.Ime, g.Prezime, f.Naziv
FROM Glumac g
JOIN Uloga u ON g.GlumacID = u.GlumacID
JOIN Film f ON u.FilmID = f.FilmID;

Vežba 3
CREATE VIEW vw_Producenti
AS
SELECT * FROM Producent;

Vežba 4
CREATE VIEW vw_Drama
AS
SELECT *
FROM Film
WHERE ZanrID = 1;

Domaći 1
CREATE VIEW vw_FilmDetalji
AS
SELECT f.Naziv, f.Trajanje, z.NazivZanra
FROM Film f
JOIN Zanr z ON f.ZanrID = z.ZanrID;

Domaći 2
CREATE VIEW vw_BrojFilmova
AS
SELECT ZanrID, COUNT(*) AS Broj
FROM Film
GROUP BY ZanrID;

Domaći 3
CREATE VIEW vw_GlumciGrad
AS
SELECT *
FROM Glumac
WHERE MestoRodjenja = 'New York';

Domaći 4
CREATE VIEW vw_FilmUloga
AS
SELECT f.Naziv, g.Ime, g.Prezime, t.Tip
FROM Film f
JOIN Uloga u ON f.FilmID = u.FilmID
JOIN Glumac g ON u.GlumacID = g.GlumacID
JOIN Tip_Uloge t ON u.TipUlogeID = t.TipUlogeID;

Zaključak

Važno je da razumete da pogled nije tabela, već “prozor” ka podacima”.

Poslednja izmena: петак, 24. април 2026, 09:06