Pohľady MySQL: Ako vytvoriť pohľad z tabuliek s príkladmi

Obsah:

Anonim

Čo sú to pohľady v MySQL?

VIEWS sú virtuálne tabuľky, ktoré neukladajú žiadne vlastné údaje, ale zobrazujú údaje uložené v iných tabuľkách. Inými slovami, VIEWS nie sú nič iné ako SQL dotazy. Zobrazenie môže obsahovať všetky alebo niekoľko riadkov z tabuľky. Pohľad MySQL môže zobrazovať údaje z jednej tabuľky alebo z mnohých tabuliek.

Syntax MySQL Views

Pozrime sa teraz na základnú syntax použitú na vytvorenie zobrazenia v MySQL.

CREATE VIEW `view_name` AS SELECT statement;

KDE

  • "CREATE VIEW` view_name` " hovorí serveru MySQL, aby vytvoril objekt zobrazenia v databáze s názvom` view_name`
  • „AS SELECT statement“ sú príkazy SQL, ktoré sa majú zabaliť do zobrazení MySQL. Môže to byť príkaz SELECT, ktorý môže obsahovať údaje z jednej tabuľky alebo z viacerých tabuliek.

Ako vytvárať pohľady v MySQL

Nasleduje postup krok za krokom k vytvoreniu zobrazenia v MySQL:

Poďme si teraz vytvoriť prvý pohľad pomocou „myflixdb“, vytvoríme jednoduchý pohľad, ktorý obmedzuje stĺpce zobrazené v tabuľke členov.

Predpokladajme, že v požiadavkách na autorizáciu sa uvádza, že účtovné oddelenie vidí v tabuľke členov iba číslo, meno a pohlavie člena. Aby ste to dosiahli, môžete vytvoriť ZOBRAZENIE -

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb a rozšírenie uzla zobrazení v databázovom prieskumníku nám dáva nasledujúce výsledky.

Upozorňujeme, že objekt accounts_v_members je teraz viditeľný v objektoch zobrazenia databázy. Poďme teraz vykonať príkaz SELECT, ktorý vyberie všetky polia z pohľadu, ako je zobrazené v príklade vytvorenia pohľadu MySQL.

SELECT * FROM `accounts_v_members`;

Vykonanie vyššie uvedeného skriptu v pracovnej ploche MySQL proti myflixdb nám poskytne nasledujúce výsledky uvedené nižšie.

 
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

Vrátené boli iba autorizované stĺpce pre oddelenie účtov. Ďalšie podrobnosti nájdené v tabuľke členov boli skryté.

Ak chceme vidieť príkazy SQL, ktoré tvoria konkrétne zobrazenie, môžeme na to použiť nasledujúci skript.

ZOBRAZIŤ VYTVORENIE ZOBRAZENIA `accounts_v_members`;

Vykonaním vyššie uvedeného skriptu získate názov zobrazenia a príkazy SQL SELECT použité na vytvorenie zobrazenia.

Spojenia a zobrazenia v MySQL

Pozrime sa teraz na pomerne zložitý príklad, ktorý zahŕňa viac tabuliek a používa spojenie.

Zbalíme vytvorený JOIN, ktorý získava informácie z troch (3) tabuliek, a to členov, filmov a výpožičiek filmov. Nižšie je uvedený skript, ktorý nám pomáha dosiahnuť to.

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`;

Vykonaním vyššie uvedených skriptov sa v našom myflixdb vytvorí zobrazenie s názvom general_v_movie_rentals

Vyberme teraz všetky polia z tabuľky s názvom general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb nám dáva nasledujúce výsledky uvedené nižšie.

 
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

Upozorňujeme, že sme nemuseli písať zložitý dotaz JOIN, aby sme získali informácie o členoch, filmoch a podrobnostiach o požičiavaní filmov. Jednoducho sme použili pohľad v bežnom príkaze SELECT ako ktorúkoľvek inú bežnú tabuľku. Zobrazenie je možné vyvolať z ľubovoľného miesta v aplikačnom systéme bežiacom nad myflixdb.

Prepadávanie zobrazení v MySQL

Príkaz DROP možno použiť na odstránenie pohľadu, ktorý už nie je potrebný z databázy. Základná syntaxa na zrušenie zobrazenia je nasledovná.

DROP VIEW ` general_v_movie_rentals `;

Prečo používať zobrazenia?

Možno budete chcieť použiť zobrazenia predovšetkým z nasledujúcich 3 dôvodov

  • V konečnom dôsledku využijete svoje znalosti jazyka SQL na vytváranie aplikácií, ktoré budú využívať databázu pre požiadavky na údaje. Namiesto samotných tabuliek sa odporúča, aby ste vo svojej aplikácii použili VIEWS pôvodnej štruktúry tabuľky. To zaisťuje, že keď refactorujete svoju databázu, váš starší kód uvidí orignálnu schému cez zobrazenie bez toho, aby ste porušili aplikáciu.
  • ZOBRAZENIA zvyšujú opätovnú použiteľnosť. Nebudete musieť vytvárať zložité dotazy zahŕňajúce spojenia opakovane. Celá zložitosť sa prevedie do jedného riadku dotazu pomocou VIEWS. Takýto skrátený kód bude jednoduchšie integrovať do vašej aplikácie. Tým sa vylúči pravdepodobnosť preklepov a váš kód bude čitateľnejší.
  • VIEWS pomoc v oblasti bezpečnosti údajov. Pomocou zobrazení môžete používateľom zobrazovať iba autorizované informácie a skryť citlivé údaje, ako sú čísla kreditných kariet.

Zhrnutie

  • Pohľady sú virtuálne tabuľky; neobsahujú vrátené údaje. Údaje sú uložené v tabuľkách, na ktoré sa odkazuje vo výkaze SELECT.
  • Pohľady zlepšujú bezpečnosť databázy tým, že autorizovaným používateľom zobrazujú iba zamýšľané údaje. Skrývajú citlivé údaje.
  • Zobrazenia uľahčujú život, pretože nemusíte opakovane písať zložité dotazy.
  • Na ZOBRAZENIE je možné použiť INSERT, UPDATE a DELETE. Tieto operácie zmenia podkladové tabuľky VIEW. Jedinou úvahou je, že VIEW by mal obsahovať všetky NIE NULL stĺpce tabuliek, na ktoré odkazuje. V ideálnom prípade by ste nemali používať VIEWS na aktualizáciu.