Što su pogledi u MySQL-u?
POGLEDI su virtualne tablice koje ne pohranjuju vlastite podatke već prikazuju podatke pohranjene u drugim tablicama. Drugim riječima, POGLEDI nisu ništa drugo nego SQL upiti. Pogled može sadržavati sve ili nekoliko redaka iz tablice. MySQL prikaz može prikazivati podatke iz jedne tablice ili iz više tablica.
Sintaksa MySQL Views
Pogledajmo sada osnovnu sintaksu koja se koristi za stvaranje pogleda u MySQL-u.
CREATE VIEW `view_name` AS SELECT statement;
GDJE
- "CREATE VIEW` view_name` " govori MySQL poslužitelju da kreira objekt prikaza u bazi podataka pod nazivom` view_name`
- "AS SELECT statement" je SQL izraz koji se mora spakirati u MySQL Views. To može biti naredba SELECT može sadržavati podatke iz jedne tablice ili više tablica.
Kako stvoriti poglede u MySQL-u
Slijedi korak po korak postupak stvaranja pogleda u MySQL:
Stvorimo sada svoj prvi pogled pomoću "myflixdb", stvorit ćemo jednostavan prikaz koji ograničava stupce koji se vide u tablici članova.
Pretpostavimo da zahtjevi za autorizacijom navode da računski odjel može vidjeti samo broj, ime i spol člana iz članske tablice. Da biste to postigli možete stvoriti POGLED -
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Izvršenje gornje skripte u MySQL radnom stolu protiv myflixdb i proširivanje čvora pogleda u istraživaču baze podataka daje nam sljedeće rezultate.
Imajte na umu da je objekt accounts_v_members sada vidljiv u objektima prikaza baze podataka. Izvršimo sada naredbu SELECT koja odabire sva polja iz prikaza kako je prikazano u donjem primjeru MySQL create view.
SELECT * FROM `accounts_v_members`;
Izvršenje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam sljedeće rezultate prikazane u nastavku.
membership_number | full_names | gender |
---|---|---|
1 | Janet Jones | Female |
2 | Janet Smith Jones | Female |
3 | Robert Phil | Male |
4 | Gloria Williams | Female |
5 | Leonard Hofstadter | Male |
6 | Sheldon Cooper | Male |
7 | Rajesh Koothrappali | Male |
8 | Leslie Winkle | Male |
9 | Howard Wolowitz | Male |
Vraćeni su samo ovlašteni stupci za računovodstvo. Ostali detalji pronađeni u tablici članova su skriveni.
Ako želimo vidjeti SQL izraze koji čine određeni prikaz, za to možemo koristiti dolje prikazanu skriptu.
POKAŽI STVARI PRIKAZ `accounts_v_members`;
Izvršavanje gornje skripte daje vam ime pogleda i SQL SELECT izraze korištene za stvaranje prikaza.
Spajanja i prikazi u MySQL-u
Pogledajmo sada prilično složen primjer koji uključuje više tablica i koristi spajanja.
Pakirat ćemo stvoreni JOIN koji informacije dobiva iz tri (3) tablice, a to su članovi, filmovi i iznajmljivanje filmova. Ispod je skripta koja nam pomaže da to postignemo.
CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;
Izvršavanjem gornjih skripti stvara se pogled pod nazivom general_v_movie_rentals u našem myflixdb
Odaberite sada sva polja iz tablice koja se naziva general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
Izvršavanje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam sljedeće rezultate prikazane u nastavku.
membership_number | full_names | title | transaction_date | return_date |
---|---|---|---|---|
1 | Janet Jones | Pirates of the Caribean 4 | 20-06-2012 | 28-06-2012 |
1 | Janet Jones | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
3 | Robert Phil | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
2 | Janet Smith Jones | Forgetting Sarah Marshal | 21-06-2012 | 24-06-2012 |
3 | Robert Phil | X-Men | 23-06-2012 | 28-06-2012 |
Imajte na umu da nismo morali pisati složeni JOIN upit da bismo dobili informacije o članovima, filmovima i pojedinostima o posudbi filmova. Jednostavno smo koristili prikaz u uobičajenom SELECT izrazu kao bilo koju drugu uobičajenu tablicu. Pogled se može pozvati s bilo kojeg mjesta u aplikacijskom sustavu pokrenutom na vrhu myflixdb.
Ispuštanje pogleda u MySQL
Naredba DROP može se koristiti za brisanje pogleda iz baze podataka koji više nije potreban. Osnovna sintaksa ispuštanja pogleda je sljedeća.
DROP VIEW ` general_v_movie_rentals `;
Zašto koristiti poglede?
Poglede možda želite koristiti prvenstveno iz slijedeća 3 razloga
- U konačnici ćete koristiti svoje znanje iz SQL-a za stvaranje aplikacija koje će koristiti bazu podataka za potrebe podataka. Preporučuje se da u svojoj aplikaciji koristite POGLEDI izvorne strukture tablice, umjesto da upotrebljavate same tablice. To osigurava da će, kada refaktorirate svoj DB, vaš naslijeđeni kôd vidjeti izvornu shemu kroz pogled, bez prekida aplikacije.
- POGLEDI povećavaju ponovnu iskoristivost. Nećete morati opetovano izrađivati složene upite koji uključuju pridruživanja. Sva složenost pretvara se u jedan redak upita pomoću POGLEDA. Takav sažeti kod lakše ćete integrirati u svoju aplikaciju. Ovo će eliminirati šanse za pogreške u upisu i vaš će kôd biti čitljiviji.
- POGLEDI pomažu u sigurnosti podataka. Preglede možete koristiti da biste korisnicima prikazivali samo ovlaštene podatke i sakrivali osjetljive podatke poput brojeva kreditnih kartica.
Sažetak
- Pogledi su virtualne tablice; ne sadrže podatke koji se vraćaju. Podaci su pohranjeni u tablicama na koje se odnosi izraz SELECT.
- Pogledi poboljšavaju sigurnost baze podataka prikazujući samo namijenjene podatke ovlaštenim korisnicima. Oni skrivaju osjetljive podatke.
- Pogledi olakšavaju život jer nemate vremena za pisanjem složenih upita.
- Na POGLEDU je moguće koristiti INSERT, UPDATE i DELETE. Te će operacije promijeniti temeljne tablice VIEW-a. Jedino što treba uzeti u obzir je da VIEW treba sadržavati sve stupce NOT NULL tablica na koje se poziva. U idealnom slučaju, ne biste trebali koristiti POGLEDE za ažuriranje.