mysql create view tutorial with code examples
Tento návod na vytvorenie zobrazenia MySQL vysvetľuje všetko o vytváraní zobrazenia v MySQL pomocou rôznych klauzúl a príkladov. Zahŕňa tiež spôsob vynechania a správy zobrazení:
V MySQL je view virtuálna tabuľka, ktorá nám umožňuje nahliadnuť do údajov v tabuľke bez toho, aby blokovala prístup k tabuľke inými programami, a tým nám pomáha predchádzať situáciám zablokovania.
Zobrazenia sa vytvárajú navrchu jednej alebo viacerých tabuliek, ktoré obsahujú údaje. Predtým, ako budete pokračovať, nezabudnite, že používame MySQL verzia 8.0 .
Čo sa dozviete:
MySQL Vytvoriť pohľad
Syntax:
CREATE [REPLACE] VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Vysvetlenie syntaxe:
- Syntax začína kľúčovým slovom „CREATE VIEW“, čím informuje server MySQL o type činnosti, ktorá sa má vykonať. Toto je povinné kľúčové slovo a nemožno ho vynechať.
- REPLACE je voliteľný parameter. Môžeme to použiť, keď pracujeme na existujúcom zobrazení.
- Ďalej nasleduje názov pohľadu. Mal by byť jedinečný rovnako ako názvy tabuliek a stĺpcov.
- Potom vyberte stĺpce z tabuľky. Zobrazenie môže mať všetky stĺpce podkladovej tabuľky alebo iba niekoľko vybraných.
- Ďalej nasleduje názov tabuľky, na ktorej sa má pohľad vykonať. Toto je povinné a nemožno ho vynechať.
- Potom nastane podmienka WHERE, ktorá obmedzuje alebo filtruje počet cieľových riadkov, na ktoré sa má akcia CREATE VIEW aplikovať. WHERE je tiež kľúčové slovo, ale voliteľné.
Klauzula WHERE je však významná. Ak nie je uvedené alebo ak nie je podmienka nastavená správne, bude súčasťou zobrazenia buď celá tabuľka, alebo nevyžadované riadky.
Príklad vytvorenia zobrazenia MySQL
Ďalej je uvedená vzorová tabuľka vytvorená v MYSQL.
Názov schémy: mierumilovný
Názov tabuľky: zamestnancov
Názvy stĺpcov:
empNum : Obsahuje celočíselné hodnoty pre číslo zamestnanca.
priezvisko : Zadržuje hodnoty varchar pre priezvisko zamestnanca.
krstné meno : Zadržuje hodnoty varchar pre krstné meno zamestnanca.
e-mail : Zadržuje hodnoty varchar pre e-mailovú identifikáciu zamestnanca.
odd : Je držiteľom varchar pre ID oddelenia, ku ktorému zamestnanec patrí.
plat : Drží desatinné hodnoty platu pre každého zamestnanca.
dátum začiatku : Zachováva hodnoty dátumu pre dátum spojenia zamestnanca.
Názov schémy: mierumilovný
Názov tabuľky: oddelenia
Názvy stĺpcov:
deptNum; Drží varchar pre ID oddelenia v organizácii.
mesto: Je v ňom názov mesta, z ktorého oddelenia pracujú.
krajina: Obsahuje názov krajiny zodpovedajúci mestu.
bonus Drží percentuálnu hodnotu bonusu.
MySQL Jednoduché Vytvorenie pohľadu
Teraz si vytvoríme pohľad na vyššie uvedenú tabuľku.
Nižšie je uvedený dotaz.
Klauzula SELECT môže byť s konkrétnymi názvami stĺpcov alebo na získanie všetkých stĺpcov môžeme použiť znak „*“. Po vytvorení zobrazenia nemôžeme stĺpce pridávať ani mazať. Ak chceme pridať alebo odstrániť stĺpce, budeme musieť vytvoriť nové zobrazenie alebo nahradiť toto existujúce.
Výstupný príkaz ukazuje, že príkazy SQL CREATE VIEW boli úspešne vykonané. Tiež sa v ňom uvádza, že neboli ovplyvnené žiadne riadky. To znamená, že keď sa vytvorí nový riadok, nebude to mať vplyv na údaje v základnej tabuľke.
Teraz sa spýtajme na pohľad.
Dopyt:
CREATE VIEW employees_view AS SELECT empNum, lastName, firstName, email, deptNum, salary, start_date FROM employees ; SELECT empNum, firstName, lastName, email, deptNum, salary, start_date FROM employees_view ;
Sada výsledkov:
empNum | priezvisko | krstné meno | odd | plat | dátum začiatku | |
---|---|---|---|---|---|---|
1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494,4 | 0001-01-01 |
1001 | Andrews | Jack | ja@gmail.com | 1 | 3182,7 | 0001-01-01 |
1002 | Schwatz | Mike | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
1003 | Langley | Margaréta | margaret.langley@gmail.com | dva | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | čítať | Peter | pl@gmail.com | dva | 14332,5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | dva | 16537,5 | 0001-01-01 |
1009 | pohár | Harry | hb@gmail.com | 5 | 30645,6 | 0001-01-01 |
1011 | Hanks | Tom | th@gmail.com | NULOVÝ | 10100 | 0001-01-01 |
1012 | Luther | Martina | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 | Branson | Ján | jb@gmail.com | dva | 15000 | 0001-01-01 |
1016 | Martina | Richard | rm@gmail.com | 4 | 5 000 | 0001-01-01 |
1017 | Johnson | Eva | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Bond | Nolan | nb@gmail.com | dva | 15000 | 2019-09-13 |
Vytvorte zobrazenie pomocou SKUPINY BY a OBJEDNÁVKY
Predpokladajme scenár, keď potrebujeme získať celkovú výšku platu, oddelene.
Nižšie je uvedený dopyt:
Namiesto toho, aby sme tento dopyt spúšťali v tabuľke zakaždým, potrebujeme informácie, je lepšie zadať dotaz do zobrazenia, pretože to spotrebuje menej zdrojov databázy.
Pozrime sa teraz na obsah nášho zobrazenia. Zistíme, koľko každé oddelenie posiela svojim zamestnancom z hľadiska platov.
Dopyt:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Sada výsledkov:
odd | suma (plat) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | dva | Charlotte | Spojené štáty | 5 |
5 | 30645,6 | |||||
4 | 5 000 | |||||
3 | 42994,4 | |||||
dva | 69690 | |||||
1 | 44096,2 | |||||
NULOVÝ | 10100 |
NULL v deptNum označuje, že zamestnanec nie je súčasťou žiadneho oddelenia, ale je na výplatných páskach organizácie.
prečo je linux lepší ako windows
MySQL Vytvoriť zobrazenie pomocou JOIN
Predpokladajme, že chceme získať údaje o tomto oddelení, meste, z ktorého je založené, a bonusoch, ktoré sú poskytované jeho zamestnancom. Tieto informácie potrebujeme pre každého zamestnanca.
Aby sme to dosiahli, použijeme kľúčové slovo JOIN na získanie údajov z tabuľky oddelení a zamestnancov.
Pozrime sa na dopyt a jeho výstup.
Môžeme tu použiť rôzne typy PRIPOJENIA, ako napríklad INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN alebo FULL OUTER JOIN v závislosti od našich požiadaviek.
Dopyt:
CREATE VIEW join_view AS SELECT A.empNum, A.lastName, A.firstName, A.deptNum, B.city, B.country, B.bonus FROM employees A INNER JOIN departments B USING (deptNum) ; SELECT * FROM join_view ;
Poďme teraz vykonať SELECT v tomto zobrazení, aby sme videli výstup:
Sada výsledkov:
empNum | priezvisko | krstné meno | odd | mesto | krajina | bonus |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | 1 | New York | Spojené štáty | 3 |
1002 | Schwatz | Mike | 1 | New York | Spojené štáty | 3 |
1004 | Harera | Sandra | 1 | New York | Spojené štáty | 3 |
1014 | Murray | Keith | 1 | New York | Spojené štáty | 3 |
1003 | Langley | Margaréta | dva | Charlotte | Spojené štáty | 5 |
1005 | čítať | Peter | dva | Charlotte | Spojené štáty | 5 |
1015 | Branson | Ján | dva | Charlotte | Spojené štáty | 5 |
1018 | Bond | Nolan | dva | Charlotte | Spojené štáty | 5 |
1008 | Bailey | Oliver | 3 | Chicago | Spojené štáty | 8 |
1012 | Luther | Martina | 3 | Chicago | Spojené štáty | 8 |
1017 | Johnson | Eva | 3 | Chicago | Spojené štáty | 8 |
1016 | Martina | Richard | 4 | Londýn | Anglicko | 10 |
1009 | pohár | Harry | 5 | Berlín | Nemecko | 13 |
Vytvorte zobrazenie pomocou poddotazu
V tomto druhu príkazu create view sa pokúsime načítať hodnotu stĺpca, kde je klauzula založená na výstupe poddotazu. Povedzme, musíme nájsť všetkých tých zamestnancov, ktorých plat je vyšší ako priemerný plat organizácie.
Pozrime sa na dopyt:
Dopyt:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Sada výsledkov:
empNum | priezvisko | krstné meno | plat |
---|---|---|---|
1018 | Bond | Nolan | 15000 |
1005 | čítať | Peter | 14332,5 |
1006 | Keith | Jenny | 16537,5 |
1008 | Bailey | Oliver | 24494,4 |
1009 | pohár | Harry | 30645,6 |
1014 | Murray | Keith | 25000 |
1015 | Branson | Ján | 15000 |
Správa zobrazení
Použitím Alter View alebo Create / Replace view môžeme upraviť / nahradiť akékoľvek zobrazenie. Výslovné použitie príkazu ALTER VIEW na opätovnú kompiláciu zobrazenia nie je platné.
Ak máte systémové oprávnenia ALTER ANY Table alebo ak je zobrazenie vo vašej schéme, môžete použiť príkaz ALTER VIEW.
Použitím dotazu Alter View môžeme vyhľadať chyby rekompilácie pred časom spustenia. Používanie príkazu ALTER VIEW môže mať vplyv na ďalší objekt / pohľad, ktorý na ňom závisí. Po zmene teda môžeme pohľad znovu skompilovať.
Pohľad môžeme predefinovať pomocou príkazu Vytvoriť pohľad a existujúci pohľad môžeme nahradiť dotazom Nahradiť pohľad.
Napríklad, zvážte počet zamestnancov_zobrazenie. Tu máme stĺpce priezviska a krstného mena a niekoľko ďalších. Zvážte, že máme požiadavku na zlúčenie stĺpcov meno a priezvisko.
Nižšie je uvedený prehľad zobrazenia pred vykonaním dotazu ALTER.
Teraz spustíme dopyt ALTER VIEW a zlúčime meno a priezvisko.
Dotaz je uvedený nižšie:
Dopyt:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Pozrime sa teraz na obsah employee_view:
Ak si všimnete, nemáme pre názvy dva samostatné stĺpce. Namiesto toho máme iba jeden stĺpec, ktorý má zreťazené krstné meno aj priezvisko.
Viac informácií = >> Funkcia MySQL CONCAT
Dopyt:
SELECT * FROM employees_view;
Sada výsledkov:
empNum | empName | odd | plat | dátum začiatku | |
---|---|---|---|---|---|
1008 | Oliver Bailey | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
1001 | Jack Andrews | ja@gmail.com | 1 | 3182,7 | 0001-01-01 |
1002 | Mike Schwatz | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
1003 | Margaret Langley | margaret.langley@gmail.com | dva | 8820 | 0001-01-01 |
1004 | Sandra harera | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | dva | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | dva | 16538 | 0001-01-01 |
1009 | Harry Beaker | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1011 | Tom Hanks | th@gmail.com | 10100 | 0001-01-01 | |
1012 | Martin Luther | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Keith Murray | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 | John Branson | jb@gmail.com | dva | 15000 | 0001-01-01 |
1016 | Richard Martin | rm@gmail.com | 4 | 5 000 | 0001-01-01 |
1017 | Eve Johnson | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Nolan Bond | nb@gmail.com | dva | 15000 | 2019-09-13 |
Zrušenie zobrazenia
Zobrazenie môžeme zrušiť pomocou príkazu DROP VIEW. Jeden môže použiť DROP VIEW, ak má DROP ANY oprávnenie na zobrazenie, inak by malo byť v ich schéme. Svislé zobrazenie nemá vplyv na podkladovú tabuľku, na ktorej bolo zostavené, ani na údaje v tejto tabuľke.
Dopyt:
DROP VIEW (view name);
Časté otázky
Otázka č. 1) Ako vytvoriť zobrazenia v MySQL?
Odpoveď: Existuje niekoľko spôsobov, ako vytvoriť pohľady v MySQL. Prešli sme štyrmi rôznymi spôsobmi, ako je uvedené nižšie.
1. MySQL Simple Vytvorte pohľad
2. Vytvorenie zobrazenia MySQL pomocou GROUP BY a ORDER BY
3. Vytvorenie zobrazenia MySQL pomocou JOIN
4. Vytvorenie zobrazenia MySQL pomocou poddotazu
Otázka č. 2) Čo je to pohľad v MySQL?
Odpoveď: Zobrazenia sú ako vopred vykonané dotazy uložené v logickej štruktúre, aby sme nemuseli znova spúšťať zložité dotazy v tabuľke. Môžeme iba dopytovať pohľad a získať naše údaje bez ovplyvnenia tabuľky.
Otázka č. 3) Môžeme pri vytváraní pohľadov použiť JOIN na pohľady?
Odpoveď: Áno, príkazy JOIN je možné použiť v zobrazeniach podobným spôsobom, ako ich používame v tabuľkách.
Otázka č. 4) Môžeme vytvoriť pohľad z iného pohľadu?
Odpoveď: Pohľady v podstate fungujú ako tabuľky, ale ako virtuálne. Preto spôsob, akým vytvárame zobrazenia nad tabuľkou, môžeme podobne vytvárať zobrazenia nad iným zobrazením.
Otázka č. 5) Prečo používame zobrazenia?
najlepší bezplatný videoprevádzač pre Windows
Odpoveď: Výsledkom dotazu SQL je, že pohľad vytvorí logickú tabuľku. Zobrazenia používame z nasledujúcich dôvodov.
- Použitím zobrazenia môžeme obmedziť viditeľnosť riadkov a stĺpcov (pomocou klauzuly Select a Where) pre príslušné úlohy.
- Pohľady sa používajú, keď kombinujeme riadky a stĺpce (pomocou Únie a Pripojiť sa) z viacerých tabuliek.
- Získanie zreteľnejšej prezentácie agregácie riadkov (pomocou zoskupenia podľa a s) do tabuľky s podrobnejšími podrobnosťami.
- Zobrazenia sa používajú pri premenovávaní alebo dekódovaní stĺpcov (pomocou AS) alebo riadkov (pomocou JOIN, IF, CASE alebo Oracle’s DECODE).
- Kombináciou ktoréhokoľvek z vyššie uvedených nastavení zabezpečenia môžeme skontrolovať, či má používateľ prístup iba k tým, na ktoré má oprávnenie.
Záver
V tomto tutoriáli sme preskúmali rôzne spôsoby vytvárania zobrazenia v MySQL.
1. MySQL Simple Vytvorte pohľad
2. Vytvorenie zobrazenia MySQL pomocou GROUP BY a ORDER BY
3. Vytvorenie zobrazenia MySQL pomocou JOIN
4. Vytvorenie zobrazenia MySQL pomocou poddotazu
Podľa požiadaviek projektu si môžeme zvoliť jednu z týchto možností.
Ďalšie čítanie = >> MySQL CREATE TABLE
Šťastné učenie !!
Odporúčané čítanie
- ALS TABUĽKA - Ako pridať stĺpec do tabuľky v MySQL
- Funkcie MySQL CONCAT a GROUP_CONCAT s príkladmi
- MySQL POČET A POČET DISTINCT s príkladmi
- Vytvorenie databázy MySQL - Ako vytvoriť databázu v MySQL
- VYTVORIŤ UŽÍVATEĽA MySQL: Ako vytvoriť nového používateľa v MySQL
- Výukový program na vytvorenie prehľadu MySQL s príkladmi kódu
- Klauzula MySQL GROUP BY - návod s príkladmi
- Výukový program MySQL JOIN: Vnútorný, Vonkajší, Krížový, Ľavý, Pravý a Ja