View

Mis on VIEW SQL-is?

VIEW on salvestatud SELECT-päring nimega — käitub nagu virtuaalne tabel. Andmeid ei salvestata eraldi, vaid iga kord kui kasutad vaadet, loetakse andmed originaaltabelitest.


Millal kasutada?

  • Pikk ja keeruline päring, mida kasutad tihti
  • Tahad varjata keerukust — kasutaja näeb ainult lihtsat tabelit
  • Turvalisus — saad lubada ligipääsu vaatele, mitte originaaltabelile

Süntaks

sql

CREATE VIEW vaate_nimi AS
SELECT veerg1, veerg2
FROM tabel
WHERE tingimus;

Kasutamine:

sql

SELECT * FROM vaate_nimi;

Kustutamine:

sql

DROP VIEW vaate_nimi;

Sinu faili näited

Vaade 1 — mitu praktikakoha on igal firmal:

sql

CREATE VIEW vw_firma_praktikakohad AS
SELECT
  firma.firmanimi,
  COUNT(praktikabaas.praktikabaasID) AS praktikakohti
FROM praktikabaas
JOIN firma ON firma.firmaID = praktikabaas.firmaID
GROUP BY firma.firmanimi;

-- Kasutamine:
SELECT * FROM vw_firma_praktikakohad;

Ilma vaateta peaksid seda JOIN + COUNT + GROUP BY kombinatsiooni iga kord uuesti kirjutama.

Vaade 2 — sügisel sündinud juhendajad (sept, okt, nov):

sql

CREATE VIEW vw_sugisel_sundinud_juhendajad AS
SELECT *
FROM praktikajuhendaja
WHERE MONTH(synniaeg) IN (9, 10, 11);

-- Kasutamine:
SELECT * FROM vw_sugisel_sundinud_juhendajad;

Lisa näited

Vaade 3 — juhendajad koos nende firmaga ja palgaga:

sql

CREATE VIEW vw_juhendajad_firmaga AS
SELECT
  praktikajuhendaja.eesnimi,
  praktikajuhendaja.perekonnanimi,
  praktikajuhendaja.palk,
  firma.firmanimi
FROM praktikabaas
JOIN praktikajuhendaja 
  ON praktikabaas.juhendajaID = praktikajuhendaja.praktikajuhendajaID
JOIN firma 
  ON praktikabaas.firmaID = firma.firmaID;

SELECT * FROM vw_juhendajad_firmaga;

Vaade 4 — ainult üle keskmise palgaga juhendajad:

sql

CREATE VIEW vw_korgepalgalised AS
SELECT eesnimi, perekonnanimi, palk
FROM praktikajuhendaja
WHERE palk > (SELECT AVG(palk) FROM praktikajuhendaja);

SELECT * FROM vw_korgepalgalised;

VIEW vs tabel — lühidalt

VIEWTabel
Andmed salvestatud?Loeb alati originaalistJah
Uueneb automaatselt?JahAinult kui ise lisad
Loomise käskCREATE VIEWCREATE TABLE