MySQL Pogledi: Kako stvoriti prikaz iz tablica s primjerima
Što su Views in MySQL?
POGLED su virtualne tablice koje ne pohranjuju vlastite podatke, već prikazuju podatke pohranjene u drugim tablicama. Drugim riječima, VIEWS nisu ništa drugo nego SQL upiti. Pogled može sadržavati sve ili nekoliko redaka iz tablice. A MySQL pogled može prikazati podatke iz jedne tablice ili više tablica.
MySQL Sintaksa prikaza
Pogledajmo sada osnovnu sintaksu koja se koristi za stvaranje prikaza MySQL.
CREATE VIEW `view_name` AS SELECT statement;
GDJE
- “KREIRAJ PRIKAZ `view_name`” govori MySQL poslužitelj za stvaranje objekta pogleda u bazi podataka pod nazivom `view_name`
- “AS SELECT izjava” je SQL naredbe koje treba upakirati u MySQL Pogledi. To može biti izjava SELECT koja može sadržavati podatke iz jedne tablice ili više tablica.
Kako stvoriti prikaze u MySQL
Slijedi korak po korak proces stvaranja prikaza MySQL:
Korak 1) Stvorite naš prvi prikaz pomoću “myflixdb”
Kreirajmo sada naš prvi prikaz pomoću “myflixdb” stvorit ćemo jednostavan prikaz koji ograničava stupce koji se vide u tablici članova.
Pretpostavimo da zahtjevi za autorizaciju navode da odjel računovodstva može vidjeti samo broj člana, ime i spol iz tablice člana. Da biste to postigli, možete stvoriti POGLED –
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Korak 2) Proširivanje čvora prikaza
Izvršavanje gornje skripte u MySQL workbench u odnosu na myflixdb i proširenje č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.
Korak 3) Izvršite naredbu SELECT
Izvršimo sada a SELECT izraz koji odabire sva polja iz prikaza kao što je prikazano u nastavku MySQL stvoriti primjer prikaza.
SELECT * FROM `accounts_v_members`;
Korak 4) Izvršite skriptu
Izvršavanje gornje skripte u MySQL workbench u odnosu na 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 naredbe koje čine određeni prikaz, za to možemo koristiti skriptu prikazanu u nastavku.
SHOW CREATE VIEW `accounts_v_members`;
Izvršavanje gornje skripte daje vam naziv prikaza i SQL SELECT naredbe koje se koriste za stvaranje pogleda.
Pridružuje se i pregledava MySQL
Pogledajmo sada prilično složen primjer koji uključuje više tablica i upotreba pridružuje.
Zapakirat ćemo kreirani JOIN koji dobiva informacije iz tri (3) tablice, odnosno članova, filmova i posudbi 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šoj myflixdb
Odaberimo sada sva polja iz tablice pod nazivom general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
Izvršavanje gornje skripte u MySQL radna tezga u odnosu na 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 napisati složeni upit JOIN da bismo dobili informacije o članovima, filmovima i pojedinostima o najmu filmova. Jednostavno smo koristili pogled u redovnoj SELECT naredbi kao bilo koju drugu običnu tablicu. Pogled se može pozvati s bilo kojeg mjesta u aplikacijskom sustavu koji radi na vrhu myflixdb-a.
Ubacivanje prikaza MySQL
Naredba DROP može se koristiti za brisanje prikaza iz baza podataka to više nije potrebno. Osnovna sintaksa za ispuštanje prikaza je sljedeća.
DROP VIEW ` general_v_movie_rentals `;
Zašto koristiti prikaze?
Možda ćete htjeti prvenstveno koristiti poglede iz sljedeća 3 razloga
- U konačnici ćete koristiti svoje SQL znanja, za izradu aplikacija koje će koristiti bazu podataka za potrebe podataka. Preporuča se da koristite PRIKAZE izvorne strukture tablice u svojoj aplikaciji umjesto korištenja samih tablica. Ovo osigurava da će, kada refaktorizirate svoj DB, vaš naslijeđeni kod vidjeti izvornu shemu putem prikaza bez prekida aplikacije.
- PRIKAZI povećavaju mogućnost ponovne upotrebe. Nećete morati iznova stvarati složene upite koji uključuju spajanja. Sva se složenost pretvara u jedan redak upita koji koristi VIEWS. Takav sažeti kod bit će lakše integrirati u vašu aplikaciju. To će eliminirati mogućnost tipfelera i vaš će kôd biti čitljiviji.
- VIEWS pomoć u sigurnosti podataka. Možete koristiti prikaze da biste korisnicima prikazali samo ovlaštene podatke i sakrili osjetljive podatke poput brojeva kreditnih kartica.
rezime
- Pogledi su virtualne tablice; ne sadrže podatke koji se vraćaju. Podaci su pohranjeni u tablicama na koje se poziva izjava SELECT.
- Prikazi poboljšavaju sigurnost baze podataka prikazujući samo namijenjene podatke ovlaštenim korisnicima. Skrivaju osjetljive podatke.
- Pogledi olakšavaju život jer ne morate stalno iznova pisati složene upite.
- Moguće je koristiti INSERT, UPDATE i DELETE na VIEW. Ove operacije će promijeniti temeljne tablice VIEW-a. Jedino što treba uzeti u obzir je da VIEW treba sadržavati sve NOT NULL stupce tablica na koje upućuje. U idealnom slučaju, ne biste trebali koristiti VIEWS za ažuriranje.