MySQL nézetek: Hogyan készítsünk nézetet a táblázatokból példákkal

Tartalomjegyzék:

Anonim

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.