Razumevanje i Kreiranje SQL Pogleda
Za interakciju sa relacionim bazama podataka i formiranje SQL pogleda, koristimo SQL, odnosno jezik strukturiranih upita.
Šta su zapravo SQL pogledi? To su, u suštini, virtuelne tabele koje objedinjuju i čuvaju informacije iz stvarnih tabela unutar baze podataka. Ovaj pristup omogućava vam siguran i lak pristup podacima, dok istovremeno skriva kompleksne strukture tabela i njihovu implementaciju.
Kako sve to funkcioniše? Kao što znate, SQL upiti služe za kreiranje SQL pogleda. Prilikom kreiranja SQL pogleda, osnovni SQL upit se memoriše. Kada koristite SQL upit za dobijanje podataka iz više tabela, taj upit se izvršava i omogućava preuzimanje podataka iz relevantnih tabela. Analogno tome, kada upitujete kreirani SQL pogled, prvo se učitava sačuvani upit, koji se zatim izvršava.
Prednosti Kreiranja SQL Pogleda
Budući da SQL pogledi rade na osnovu uskladištenih SQL upita, oni značajno doprinose sigurnosti baze podataka. Takođe, pojednostavljuju kompleksne upite i poboljšavaju performanse, između ostalog. Pogledajmo kako kreiranje SQL pogleda može biti korisno za vašu bazu podataka i aplikacije:
#1. Povećana Sigurnost Baze Podataka
SQL pogledi funkcionišu kao virtuelne tabele, čime se sakriva stvarna struktura tabela u bazi podataka. Drugim rečima, samim pregledom pogleda, nemoguće je saznati broj tabela ili specifične kolone unutar njih. Uz to, moguće je dodati ograničenja pristupa, tako da korisnici mogu upite izvršavati samo nad pogledima, a ne direktno nad tabelama.
#2. Pojednostavljivanje Složenih Upita
SQL upiti često obuhvataju više tabela sa kompleksnim uslovima spajanja. Ako često koristite takve upite, kreiranje SQL pogleda može biti veoma korisno. Složeni upit možete sačuvati unutar SQL pogleda i, umesto da svaki put pokrećete celokupan upit, možete jednostavno postaviti upit nad pogledom.
#3. Ublažavanje Efekata Promena Šeme
U slučaju promena u osnovnoj strukturi tabele, kao što je dodavanje ili brisanje kolona, SQL pogledi ostaju nepromenjeni. Ako za sve upite koristite SQL poglede, ne morate brinuti o promenama šeme. Budući da su pogledi virtuelne tabele, kreirani SQL pogled će nastaviti da radi bez problema.
#4. Poboljšanje Performansi Upita
Prilikom kreiranja SQL pogleda, mehanizam baze podataka optimizuje osnovni upit pre nego što ga uskladišti. Usladišteni upit radi brže nego direktno pokretanje istog upita. Dakle, korišćenjem SQL pogleda za pristup podacima postižu se bolje performanse i brži rezultati.
Kako Kreirati SQL Pogled?
Za kreiranje SQL pogleda koristi se naredba CREATE VIEW. Pogled uključuje naredbu SELECT, koja definiše upit koji će biti sačuvan. Sintaksa je sledeća:
CREATE VIEW naziv_pogleda AS SELECT kolona_1, kolona_2, kolona_3... FROM naziv_tabele_1, naziv_tabele_2 WHERE uslovni_izraz
Radi boljeg razumevanja, razmotrimo primer. Pretpostavimo da ste kreirali dve tabele: ‘odeljenje’ i ‘zaposleni’. Tabela ‘odeljenje’ sadrži naziv odeljenja i njegov ID, dok tabela ‘zaposleni’ sadrži ime i ID zaposlenog, zajedno sa ID-om odeljenja kojem pripada. Ove dve tabele će se koristiti za kreiranje SQL pogleda.
Kreiranje Tabela Baze Podataka
odeljenje_id | naziv_odeljenja |
1 | Finansije |
2 | Tehnologija |
3 | Biznis |
Tabela 1: odeljenje
Ako koristite MySQL, tabelu možete kreirati sledećim upitom:
CREATE TABLE `odeljenje` ( `odeljenje_id` int, `naziv_odeljenja` varchar(255), PRIMARY KEY (`odeljenje_id`) );
Umetnite podatke u tabelu pomoću sledećeg SQL-a:
INSERT INTO odeljenje VALUES (1, 'Finansije'); INSERT INTO odeljenje VALUES (2, 'Tehnologija'); INSERT INTO odeljenje VALUES (3, 'Biznis');
zaposleni_id | ime_zaposlenog | odeljenje_id |
100 | John | 3 |
101 | Mary | 1 |
102 | Natalia | 3 |
103 | Bruce | 2 |
Tabela 2: zaposleni
Nakon što je tabela ‘odeljenje’ kreirana i popunjena podacima, kreirajte tabelu ‘zaposleni’ koristeći sledeći MySQL upit:
CREATE TABLE `zaposleni` ( `zaposleni_id` INT, `ime_zaposlenog` VARCHAR(255), `odeljenje_id` INT, FOREIGN KEY (`odeljenje_id`) REFERENCES odeljenje(odeljenje_id) );
Zatim, umetnite podatke o zaposlenima u tabelu. Važno je napomenuti da, budući da kolona ‘odeljenje_id’ ima referencu stranog ključa na tabelu ‘odeljenje’, ne možete umetnuti ‘odeljenje_id’ koji ne postoji u tabeli ‘odeljenje’.
INSERT INTO zaposleni VALUES (100, 'John', 3); INSERT INTO zaposleni VALUES (101, 'Mary', 1); INSERT INTO zaposleni VALUES (102, 'Natalia', 3); INSERT INTO zaposleni VALUES (103, 'Bruce', 2);
Upitivanje Tabela Baze Podataka
Hajde da upotrebimo ove tabele u upitu baze podataka. Pretpostavimo da treba da dobijete ID zaposlenog, ime zaposlenog i naziv odeljenja za sve zaposlene. U ovom slučaju, potrebno je koristiti obe tabele i spojiti ih koristeći zajedničku kolonu, a to je ‘odeljenje_id’. Upit bi izgledao ovako:
SELECT zaposleni_id, ime_zaposlenog, naziv_odeljenja FROM zaposleni, odeljenje WHERE zaposleni.odeljenje_id = odeljenje.odeljenje_id;
Kreiranje SQL Pogleda
Može se desiti da često zahtevate ove podatke. Uz to, kako se broj podataka u tabelama povećava, vreme izvršavanja upita će takođe početi da se povećava. U takvoj situaciji, možete kreirati SQL pogled koji odgovara ovom upitu.
Sledećim upitom kreirajte pogled pod nazivom ‘informacije_o_zaposlenima’:
CREATE VIEW informacije_o_zaposlenima AS SELECT zaposleni_id, ime_zaposlenog, naziv_odeljenja FROM zaposleni, odeljenje WHERE zaposleni.odeljenje_id = odeljenje.odeljenje_id;
Sada kada je pogled kreiran, možete direktno upitati isti. Upit se sada pojednostavljuje na:
SELECT * FROM informacije_o_zaposlenima;
Upit nad SQL pogledom daje isti rezultat kao i pokretanje originalnog upita. Međutim, sada je vaš upit lakši za održavanje. Pogled skriva složenost vašeg upita bez ugrožavanja rezultata ili performansi.
Kako Zameniti SQL Pogled?
Ako imate pogled sa određenim imenom i želite da ga izmenite ili zamenite, koristite naredbu CREATE OR REPLACE VIEW. Na ovaj način, možete modifikovati SELECT naredbu koja je korišćena za kreiranje pogleda. Time se zamenjuje rezultat vašeg pogleda, dok ime pogleda ostaje isto. Dodatno, kreira se novi SQL pogled ako ne postoji.
Sintaksa za zamenu SQL pogleda je sledeća:
CREATE OR REPLACE VIEW naziv_pogleda AS SELECT nova_kolona_1, nova_kolona_2, nova_kolona_3 ... FROM nova_tabela_1, nova_tabela_2 ... WHERE novi_uslovni_izraz
Ovo se može bolje razumeti na primeru. Razmotrimo tabele ‘odeljenje’ i ‘zaposleni’. Iz njih je kreiran SQL pogled ‘informacije_o_zaposlenima’, koji sadrži kolone ‘zaposleni_id’, ‘ime_zaposlenog’ i ‘naziv_odeljenja’.
Zbog bezbednosnih razloga, možda ćete želeti da uklonite ‘zaposleni_id’ iz ovog pogleda. Takođe, možda ćete želeti da promenite imena kolona da biste sakrili stvarna imena kolona u bazi podataka. Promene postojećeg pogleda možete izvršiti koristeći sledeći SQL upit:
CREATE OR REPLACE VIEW informacije_o_zaposlenima AS SELECT ime_zaposlenog as ime, naziv_odeljenja as odeljenje FROM zaposleni, odeljenje WHERE zaposleni.odeljenje_id = odeljenje.odeljenje_id;
Nakon što se pogled zameni, dobićete različite rezultate kada koristite isti upit kao ranije. Na primer, u rezultatu upita ćete videti da je jedna kolona uklonjena. Uz to, imena kolona su izmenjena iz ‘ime_zaposlenog’ i ‘naziv_odeljenja’ u ‘ime’ i ‘odeljenje’, respektivno.
Iskoristite Prednosti Kreiranja SQL Pogleda
Kreiranje SQL pogleda donosi ne samo pojednostavljene upite i brže pretraživanje podataka, već i sigurnost i zaštitu od promena šeme. Kreiranje SQL pogleda je vrlo jednostavno. Možete uzeti bilo koji postojeći upit i pretvoriti ga u SQL pogled.
Koristite ovaj vodič da kreirate SQL poglede i iskoristite njihove prednosti. Sa SQL pogledima, vaše aplikacije baza podataka mogu postati jednostavne i bezbedne, uz istovremeno poboljšanje performansi.
Ako želite da upravljate sopstvenim SQL serverom, pogledajte SQL Server Management Studio (SSMS).