Mik a nézetek a MySQL-ben?
A VIEWS olyan virtuális táblák, amelyek nem tárolnak saját adatokat, de más táblákban tárolt adatokat jelenítik meg. Más szavakkal, a VIEWS nem más, mint SQL lekérdezések. A nézet tartalmazhatja a táblázat összes vagy néhány sorát. A MySQL nézet egy vagy több táblázat adatait jelenítheti meg.
MySQL Views szintaxis
Most nézzük meg a MySQL-ben a nézet létrehozásához használt alapvető szintaxist.
CREATE VIEW `view_name` AS SELECT statement;
HOL
- A "CREATE VIEW" view_name "" parancs megadja a MySQL szervernek, hogy hozzon létre egy view objektumot a "view_name" nevű adatbázisban.
- Az "AS SELECT utasítás" a MySQL nézetekbe csomagolandó SQL utasítás. Ez lehet egy SELECT utasítás, amely egy vagy több táblázat adatait tartalmazhatja.
Nézetek létrehozása a MySQL-ben
A következő lépésről lépésre létrehozza a nézetet a MySQL-ben:
Most hozzuk létre az első nézetet a "myflixdb" használatával, létrehozunk egy egyszerű nézetet, amely korlátozza a tagok táblázatában látható oszlopokat.
Tegyük fel, hogy az engedélyezési követelmények kimondják, hogy a számviteli részleg csak a tag számát, nevét és nemét láthatja a tag táblázatából. Ennek eléréséhez létrehozhat egy NÉZETET -
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb-vel szemben és a nézetcsomópont kibővítése az adatbázis-felfedezőben a következő eredményeket adja.
Vegye figyelembe, hogy a accounts_v_members objektum már látható az adatbázis-nézet objektumokban. Futtassunk most egy SELECT utasítást, amely az összes mezőt kiválasztja a nézetből, az alábbi MySQL létrehozási nézet példában látható módon.
SELECT * FROM `accounts_v_members`;
A fenti szkript futtatása a MySQL munkapadban a myflixdb ellen a következő eredményeket nyújtja nekünk.
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 |
Csak a számlák osztályának engedélyezett oszlopai kerültek vissza. A tagok táblázatában található egyéb részleteket elrejtették.
Ha meg akarjuk látni az adott nézetet alkotó SQL utasításokat, akkor az alább látható szkriptet használhatjuk erre.
SHOW CREATE VIEW `fiókok_v_tagok`;
A fenti parancsfájl végrehajtásával megkapja a nézet nevét és a nézet létrehozásához használt SQL SELECT utasításokat.
Csatlakozások és nézetek a MySQL-ben
Nézzünk most egy meglehetősen összetett példát, amely több táblázatot foglal magában és összekapcsolásokat használ.
Csomagoljuk a létrehozott JOIN-t, amely három (3) táblázatból kap információkat, nevezetesen tagokból, filmekből és filmkölcsönzőkből. Az alábbiakban bemutatjuk a forgatókönyvet, amely segít elérni ezt.
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`;
A fenti szkriptek végrehajtása létrehozza a my_flixdb fájlban a general_v_movie_rentals nevű nézetet.
Most válasszuk ki az összes mezőt az általános_v_movie_rentals nevű táblából.
SELECT * FROM `general_v_movie_rentals`;
A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz a következő eredményeket nyújtja nekünk.
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 |
Ne feledje, hogy nem kellett megírnunk a komplex JOIN lekérdezést, hogy információkat szerezhessünk a tagokról, a filmekről és a filmkölcsönzés részleteiről. Egyszerűen egy normál SELECT utasításban használtuk a nézetet, mint bármely más szokásos táblázatot. A nézet bárhonnan meghívható a myflixdb tetején futó alkalmazásrendszerből.
Nézetek eldobása a MySQL-ben
A DROP paranccsal törölhető egy nézet az adatbázisból, amelyre már nincs szükség. A nézet eldobásának alapvető szintaxisa a következő.
DROP VIEW ` general_v_movie_rentals `;
Miért érdemes használni a nézeteket?
A nézeteket elsősorban 3 ok miatt érdemes használni
- Végül az SQL-ismereteit felhasználva olyan alkalmazásokat hoz létre, amelyek adatbázist használnak az adatigényekhez. Javasoljuk, hogy az eredeti táblázatszerkezet VIEWS-ját használja az alkalmazásában, ahelyett, hogy maguk a táblákat használnák. Ez biztosítja, hogy amikor átalakítja a DB-t, a régi kód az alkalmazás megszakítása nélkül látja az orignal sémát a nézeten keresztül.
- A NÉZETEK növelik az újrafelhasználhatóságot. Nem kell összetett lekérdezéseket létrehozni, amelyek többszörös csatlakozásokat tartalmaznak. A bonyolultság a VIEWS használatával egyetlen lekérdezési sorba konvertálódik. Az ilyen tömörített kódot könnyebb integrálni az alkalmazásba. Ez kiküszöböli az elírási esélyeket, és a kód olvashatóbb lesz.
- A VIEWS segít az adatbiztonságban. A nézetek segítségével csak az engedélyezett információkat jelenítheti meg a felhasználók számára, és elrejtheti az érzékeny adatokat, például a hitelkártyaszámokat.
Összegzés
- A nézetek virtuális táblák; nem tartalmazzák a visszaküldött adatokat. Az adatokat a SELECT utasításban hivatkozott táblák tárolják.
- A nézetek javítják az adatbázis biztonságát azáltal, hogy csak a tervezett adatokat jelenítik meg az engedélyezett felhasználók számára. Elrejtik a bizalmas adatokat.
- A nézetek megkönnyítik az életet, mivel nem kell újra és újra összetett kérdéseket írni.
- Lehetőség van az INSERT, az UPDATE és a DELETE használatára VIEW-ban. Ezek a műveletek megváltoztatják a VIEW mögöttes tábláit. Az egyetlen szempont az, hogy a VIEW-nak tartalmaznia kell az általa hivatkozott táblák összes NULL oszlopát. Ideális esetben ne használja a VIEWS alkalmazást a frissítéshez.