Pohledy MySQL: Jak vytvořit pohled z tabulek s příklady

Obsah:

Anonim

Co jsou pohledy v MySQL?

VIEWS jsou virtuální tabulky, které neukládají žádná vlastní data, ale zobrazují data uložená v jiných tabulkách. Jinými slovy, VIEWS nejsou nic jiného než dotazy SQL. Pohled může obsahovat všechny nebo několik řádků z tabulky. Zobrazení MySQL může zobrazit data z jedné tabulky nebo z mnoha tabulek.

Syntaxe zobrazení MySQL

Pojďme se nyní podívat na základní syntaxi použitou k vytvoření pohledu v MySQL.

CREATE VIEW `view_name` AS SELECT statement;

KDE

  • "CREATE VIEW` view_name` " říká serveru MySQL, aby vytvořil objekt zobrazení v databázi s názvem` view_name`
  • „AS SELECT statement“ je příkaz SQL, který má být zabalen do zobrazení MySQL. Může to být příkaz SELECT, který může obsahovat data z jedné tabulky nebo více tabulek.

Jak vytvářet pohledy v MySQL

Následuje postup krok za krokem k vytvoření zobrazení v MySQL:

Pojďme nyní vytvořit náš první pohled pomocí "myflixdb", vytvoříme jednoduchý pohled, který omezuje sloupce viděné v tabulce členů.

Předpokládejme, že v požadavcích na autorizaci je uvedeno, že oddělení účtů vidí v tabulce členů pouze číslo, jméno a pohlaví člena. K dosažení tohoto cíle můžete vytvořit ZOBRAZENÍ -

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

Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb a rozšíření uzlu zobrazení v databázovém průzkumníku nám dává následující výsledky.

Všimněte si, že objekt accounts_v_members je nyní viditelný v objektech zobrazení databáze. Nyní provedeme příkaz SELECT, který vybere všechna pole z pohledu, jak je ukázáno v níže uvedeném příkladu vytvoření pohledu MySQL.

SELECT * FROM `accounts_v_members`;

Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb nám dává následující výsledky uvedené níže.

 
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

Byly vráceny pouze autorizované sloupce pro oddělení účtů. Další podrobnosti nalezené v tabulce členů byly skryty.

Pokud chceme vidět příkazy SQL, které tvoří konkrétní pohled, můžeme k tomu použít níže uvedený skript.

ZOBRAZIT VYTVOŘIT ZOBRAZENÍ `accounts_v_members`;

Provedení výše uvedeného skriptu vám poskytne název pohledu a příkazy SQL SELECT použité k vytvoření pohledu.

Spojení a zobrazení v MySQL

Podívejme se nyní na poměrně složitý příklad, který zahrnuje více tabulek a používá spojení.

Zabalíme vytvořený JOIN, který získá informace ze tří (3) tabulek, konkrétně členů, filmů a půjčoven filmů. Níže je uveden skript, který nám to pomáhá dosáhnout.

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

Spuštění výše uvedených skriptů vytvoří pohled s názvem general_v_movie_rentals v našem myflixdb

Pojďme nyní vybrat všechna pole z tabulky s názvem general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb nám dává následující výsledky uvedené níže.

 
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

Všimněte si, že jsme nemuseli psát složitý dotaz JOIN, abychom získali informace o členech, filmech a podrobnostech pronájmu filmů. Jednoduše jsme použili pohled v běžném příkazu SELECT jako jakoukoli jinou běžnou tabulku. Pohled lze volat odkudkoli v aplikačním systému běžícím na myflixdb.

Zrušení zobrazení v MySQL

Příkaz DROP lze použít k odstranění pohledu z databáze, který již není vyžadován. Základní syntaxe pro zrušení zobrazení je následující.

DROP VIEW ` general_v_movie_rentals `;

Proč používat zobrazení?

Možná budete chtít používat zobrazení primárně z následujících 3 důvodů

  • Nakonec využijete své znalosti SQL k vytváření aplikací, které budou využívat databázi pro požadavky na data. Doporučuje se použít v aplikaci VIEWS původní struktury tabulky namísto použití samotných tabulek. Tím je zajištěno, že při refaktorování vaší databáze váš starší kód uvidí orignální schéma prostřednictvím pohledu, aniž by došlo k porušení aplikace.
  • ZOBRAZENÍ zvyšuje opětovnou použitelnost. Nebudete muset opakovaně vytvářet složité dotazy zahrnující spojení. Celá složitost je převedena do jednoho řádku dotazu pomocí VIEWS. Takto zhuštěný kód bude snazší integrovat do vaší aplikace. Tím se eliminuje šance na překlepy a váš kód bude čitelnější.
  • ZOBRAZENÍ pomoc v zabezpečení dat. Pomocí zobrazení můžete uživatelům zobrazit pouze autorizované informace a skrýt citlivá data, jako jsou čísla kreditních karet.

souhrn

  • Pohledy jsou virtuální tabulky; neobsahují vrácená data. Data jsou uložena v tabulkách, na které se odkazuje v příkazu SELECT.
  • Pohledy zlepšují zabezpečení databáze tím, že autorizovaným uživatelům zobrazují pouze zamýšlená data. Skrývají citlivá data.
  • Pohledy usnadňují život, protože nemusíte opakovaně psát složité dotazy.
  • Na VIEW je možné použít INSERT, UPDATE a DELETE. Tyto operace změní podkladové tabulky VIEW. Jedinou úvahou je, že VIEW by měl obsahovat všechny NOT NULL sloupce tabulek, na které odkazuje. V ideálním případě byste k aktualizaci neměli používat VIEWS.