mysql create view tutorial with code examples
Tento výukový program pro vytvoření pohledu MySQL vysvětluje vše o vytváření pohledu v MySQL pomocí různých klauzulí a příkladů. Pokrývá také způsob přetažení a správy zobrazení:
V MySQL je view virtuální tabulka, která nám umožňuje nahlédnout na data v tabulce, aniž by blokovala přístup tabulky k jiným programům, a tím nám pomáhá vyhnout se situacím zablokování.
Pohledy se vytvářejí na vrcholu jedné nebo více než jedné tabulky, která obsahuje data. Než budete pokračovat, vezměte prosím na vědomí, že používáme MySQL verze 8.0 .
Co se naučíte:
MySQL Vytvořit pohled
Syntax:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Vysvětlení syntaxe:
- Syntaxe začíná klíčovým slovem „CREATE VIEW“, čímž informuje server MySQL o typu činnosti, která má být provedena. Toto je povinné klíčové slovo a nelze jej vynechat.
- REPLACE je volitelný parametr. To můžeme použít, když pracujeme na existujícím pohledu.
- Dále přichází název pohledu. Mělo by to být jedinečné, stejně jako názvy tabulek a sloupců.
- Poté vyberte sloupce z tabulky. Pohled může mít všechny sloupce podkladové tabulky nebo jen několik vybraných.
- Dále přichází název tabulky, na které je nutné pohled provést. Toto je povinné a nelze jej vynechat.
- Poté přichází podmínka WHERE, která omezuje nebo filtruje počet cílových řádků, na které se má akce CREATE VIEW aplikovat. WHERE je také klíčové slovo, ale volitelné.
Klauzule WHERE je však významná. Pokud není uvedeno, nebo pokud podmínka není správně nastavena, bude součástí zobrazení buď celá tabulka, nebo nepotřebné řádky.
Příklad vytvoření pohledu MySQL
Níže je uvedena ukázková tabulka vytvořená v MYSQL.
Název schématu: Pacifik
Název tabulky: zaměstnanci
Názvy sloupců:
empNum : Obsahuje celočíselné hodnoty pro číslo zaměstnance.
příjmení : Zadržuje hodnoty varchar pro příjmení zaměstnance.
jméno : Zadržuje hodnoty varchar pro křestní jméno zaměstnance.
e-mailem : Zadržuje hodnoty varchar pro e-mailové ID zaměstnance.
odd : Drží varchar pro ID oddělení, ke kterému zaměstnanec patří.
plat : Obsahuje desítkové hodnoty platu pro každého zaměstnance.
Datum zahájení : Obsahuje hodnoty data pro datum připojení zaměstnance.
Název schématu: Pacifik
Název tabulky: oddělení
Názvy sloupců:
deptNum; Zadržuje varchar pro ID oddělení v organizaci.
město: Obsahuje název města, ze kterého oddělení pracují.
země: Obsahuje název země odpovídající městu.
bonus Drží procentní hodnotu bonusu.
MySQL Jednoduché Vytvořit pohled
Nyní si vytvoříme pohled na výše uvedenou tabulku.
Níže je uveden dotaz.
Klauzule SELECT může být se specifickými názvy sloupců nebo můžeme použít „*“ k získání všech sloupců. Jakmile vytvoříme pohled, nebudeme moci přidávat ani mazat sloupce. Pokud chceme přidat nebo odstranit sloupce, budeme muset buď vytvořit nový pohled, nebo nahradit tento stávající pohled.
Výstupní příkaz ukazuje, že příkazy CREATE VIEW SQL byly úspěšně provedeny. Rovněž říká, že nebyly ovlivněny žádné řádky. To znamená, že když je vytvořen nový řádek, nemá to vliv na data v podkladové tabulce.
Nyní se podívejme na pohled.
Dotaz:
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ýsledků:
empNum | příjmení | jméno | e-mailem | odd | plat | Datum zahájení |
---|---|---|---|---|---|---|
1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494,4 | 0001-01-01 |
1001 | Andrews | Zvedák | ja@gmail.com | 1 | 3182.7 | 0001-01-01 |
1002 | Schwatz | Mike | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
1003 | Langley | Margaret | margaret.langley@gmail.com | dva | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | číst | Petr | 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 | NULA | 10100 | 0001-01-01 |
1012 | Luther | Martin | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | 1 | 25 000 | 0001-01-01 |
1015 | Branson | John | jb@gmail.com | dva | 15000 | 0001-01-01 |
1016 | Martin | Richarde | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | Předvečer | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Pouto | Nolan | nb@gmail.com | dva | 15000 | 2019-09-13 |
Vytvořte pohled pomocí GROUP BY a ORDER BY
Předpokládejme scénář, kdy potřebujeme získat celkovou výši platu, oddělení moudře.
Níže je uveden dotaz:
Spíše než spuštění tohoto dotazu v tabulce pokaždé, potřebujeme informace, je lepší dotazovat zobrazení, protože to spotřebuje méně zdrojů databáze.
Nyní se podívejme na obsah našeho pohledu. Zjistíme, kolik každé oddělení posílá svým zaměstnancům, pokud jde o platy.
Dotaz:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Sada výsledků:
odd | součet (plat) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | dva | Charlotte | Spojené státy | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
3 | 42994,4 | |||||
dva | 69690 | |||||
1 | 44096.2 | |||||
NULA | 10100 |
NULL v deptNum označuje, že zaměstnanec není součástí žádného oddělení, ale je na výplatních listinách organizace.
Vytvoření zobrazení MySQL pomocí JOIN
Předpokládejme, že chceme získat údaje o oddělení, městě, ze kterého je založeno, a bonus, který je nabízen jeho zaměstnancům. Tyto informace potřebujeme pro každého zaměstnance.
Abychom toho dosáhli, použijeme klíčové slovo JOIN k získání dat z tabulky oddělení a zaměstnanců.
Pojďme se podívat na dotaz a jeho výstup.
Můžeme zde použít různé typy PŘIPOJENÍ, například VNITŘNÍ PŘIPOJENÍ, LEVÝ VNĚJŠÍ PŘIPOJENÍ, PRAVÝ VNĚJŠÍ PŘIPOJENÍ nebo PLNÝ VNĚJŠÍ PŘIPOJENÍ v závislosti na našem požadavku.
zdarma mp3 ke stažení aplikace pro Android
Dotaz:
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 ;
Nyní provedeme v tomto zobrazení dotaz SELECT, abychom viděli výstup:
Sada výsledků:
empNum | příjmení | jméno | odd | město | země | bonus |
---|---|---|---|---|---|---|
1001 | Andrews | Zvedák | 1 | New York | Spojené státy | 3 |
1002 | Schwatz | Mike | 1 | New York | Spojené státy | 3 |
1004 | Harera | Sandra | 1 | New York | Spojené státy | 3 |
1014 | Murray | Keith | 1 | New York | Spojené státy | 3 |
1003 | Langley | Margaret | dva | Charlotte | Spojené státy | 5 |
1005 | číst | Petr | dva | Charlotte | Spojené státy | 5 |
1015 | Branson | John | dva | Charlotte | Spojené státy | 5 |
1018 | Pouto | Nolan | dva | Charlotte | Spojené státy | 5 |
1008 | Bailey | Oliver | 3 | Chicago | Spojené státy | 8 |
1012 | Luther | Martin | 3 | Chicago | Spojené státy | 8 |
1017 | Johnson | Předvečer | 3 | Chicago | Spojené státy | 8 |
1016 | Martin | Richarde | 4 | Londýn | Anglie | 10 |
1009 | Pohár | Harry | 5 | Berlín | Německo | 13 |
Vytvořit pohled pomocí poddotazu
V tomto druhu příkazu create view se pokusíme načíst hodnotu sloupce, kde je klauzule založena na výstupu poddotazu. Řekněme, že musíme najít všechny ty zaměstnance, jejichž plat je vyšší než průměrný plat organizace.
Podívejme se na dotaz:
Dotaz:
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ýsledků:
empNum | příjmení | jméno | plat |
---|---|---|---|
1018 | Pouto | Nolan | 15000 |
1005 | číst | Petr | 14332,5 |
1006 | Keith | Jenny | 16537,5 |
1008 | Bailey | Oliver | 24494,4 |
1009 | Pohár | Harry | 30645.6 |
1014 | Murray | Keith | 25 000 |
1015 | Branson | John | 15000 |
Správa pohledů
Použitím Alter View nebo Create / Replace view můžeme upravit / nahradit jakýkoli pohled. Použití příkazu ALTER VIEW výslovně pro překompilaci zobrazení není platné.
Pokud máte systémová oprávnění ALTER ANY Table nebo pokud je pohled ve vašem schématu, můžete použít příkaz ALTER VIEW.
Pomocí dotazu Alter View můžeme vyhledat chyby rekompilace před spuštěním. Použití příkazu ALTER VIEW může ovlivnit další objekt / pohled, který je na něm závislý. Po změně tedy můžeme pohled znovu zkompilovat.
Můžeme předefinovat pohled pomocí Vytvořit pohled a existující pohled můžeme nahradit dotazem Nahradit pohled.
Například, zvažte zaměstnance_view. Zde máme sloupce příjmení a jméno spolu s několika dalšími. Zvažte, že máme požadavek na sloučení sloupců jméno a příjmení.
Níže je uveden snímek pohledu před provedením dotazu ALTER.
Nyní provedeme dotaz ALTER VIEW a sloučíme jméno a příjmení.
Dotaz je uveden níže:
Dotaz:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Podívejme se nyní na obsah zaměstnance_view:
Pokud si všimnete, nemáme dva samostatné sloupce pro jména. Místo toho máme jen jeden sloupec, který má zřetězené křestní jméno i příjmení.
Další informace = >> Funkce MySQL CONCAT
Dotaz:
SELECT * FROM employees_view;
Sada výsledků:
empNum | empName | e-mailem | odd | plat | Datum zahájení |
---|---|---|---|---|---|
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 | 25 000 | 0001-01-01 |
1015 | John Branson | jb@gmail.com | dva | 15000 | 0001-01-01 |
1016 | Richard Martin | rm@gmail.com | 4 | 5000 | 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šení pohledu
Můžeme zrušit zobrazení pomocí příkazu DROP VIEW. Jeden může použít DROP VIEW, pokud má DROP ANY oprávnění zobrazení, jinak by měl být v jejich schématu. Svislý pohled nemá vliv na podkladovou tabulku, na které byl pohled vytvořen, ani na data v této tabulce.
Dotaz:
DROP VIEW (view name);
Časté dotazy
Otázka č. 1) Jak vytvořit zobrazení v MySQL?
Odpovědět: Existuje několik způsobů, jak vytvořit zobrazení v MySQL. Prošli jsme čtyřmi různými způsoby, jak je znázorněno níže.
1. MySQL Simple Vytvořit pohled
2. Vytvoření zobrazení MySQL pomocí GROUP BY a ORDER BY
3. Vytvoření zobrazení MySQL pomocí JOIN
4. Vytvoření zobrazení MySQL pomocí poddotazu
Otázka č. 2) Co je to pohled v MySQL?
Odpovědět: Pohledy jsou jako předem provedené dotazy uložené v logické struktuře, takže nemusíme znovu spouštět složité dotazy v tabulce. Můžeme pouze dotazovat pohled a získat naše data bez dopadu na tabulku.
Otázka č. 3) Můžeme při vytváření pohledů použít JOIN na pohledy?
Odpovědět: Ano, příkazy JOIN lze použít v pohledech podobným způsobem, jakým je používáme v tabulkách.
Otázka č. 4) Můžeme vytvořit pohled z jiného pohledu?
Odpovědět: Pohledy v podstatě fungují jako tabulky, ale jako virtuální. Proto způsob, jakým vytváříme pohledy na horní část tabulky, můžeme podobně vytvářet pohledy na jiný pohled.
Otázka č. 5) Proč používáme pohledy?
Odpovědět: V důsledku dotazu SQL vytvoří pohled logickou tabulku. Zobrazení používáme z následujících důvodů.
- Pomocí pohledu můžeme omezit viditelnost řádků a sloupců (pomocí klauzule Select a Where) pro příslušné úkoly.
- Pohledy se používají, když kombinujeme řádky a sloupce (pomocí unie a připojit) z více tabulek.
- Chcete-li získat jasnější prezentaci agregace řádků (pomocí Seskupit podle a Mít) do tabulky s podrobnějšími podrobnostmi.
- Pohledy se používají při přejmenovávání nebo dekódování sloupců (pomocí AS) nebo řádků (pomocí JOIN, IF, CASE nebo DECODE Oracle).
- Spojením kteréhokoli z výše uvedeného s nastavením zabezpečení můžeme zkontrolovat, zda má uživatel přístup pouze k tomu, na co má oprávnění.
Závěr
V tomto kurzu jsme prozkoumali různé způsoby vytváření zobrazení v MySQL.
1. MySQL Simple Vytvořit pohled
2. Vytvoření zobrazení MySQL pomocí GROUP BY a ORDER BY
3. Vytvoření zobrazení MySQL pomocí JOIN
4. Vytvoření zobrazení MySQL pomocí poddotazu
Můžeme si vybrat jednu z těchto možností v závislosti na požadavcích projektu.
Další čtení = >> MySQL CREATE TABLE
Šťastné učení !!
Doporučené čtení
- MySQL ALTER TABLE - Jak přidat sloupec do tabulky v MySQL
- Funkce MySQL CONCAT a GROUP_CONCAT s příklady
- MySQL POČET A POČET DISTINCT s příklady
- Vytvořit databázi MySQL - Jak vytvořit databázi v MySQL
- MySQL CREATE USER: Jak vytvořit nového uživatele v MySQL
- MySQL Create View Tutorial s příklady kódu
- Klauzule MySQL GROUP BY - výukový program s příklady
- Výukový program MySQL JOIN: vnitřní, vnější, křížový, levý, pravý a vlastní