SQL pohled je virtuální tabulka nebo sada výsledků generovaná dotazem SELECT. Na rozdíl od fyzických tabulek pohledy neukládají data do databáze. Když spustíme dotaz SELECT k naplnění dat, provede se dotaz, který vytvoří pohled (definice pohledu).
Co je zobrazení v MySQL
Předpokládejme, že používáte složitý SQL dotaz, který používá více spojení a složitou obchodní logiku. Tento dotaz v kódu aplikace používáte často. Kvůli obchodním požadavkům však musíte změnit logiku dotazu. Změny provedené v dotazu se musí projevit v celé aplikaci.
V takových případech je vhodnější vytvořit pohled SQL a zapouzdřit do něj obchodní logiku. Navíc, když chceme změnit definici dotazu, můžeme změnit definici pohledu namísto provádění změn v aplikaci.
Zobrazení platí také pro skrytí skutečného názvu a podrobností tabulky. Pokud v tabulce uložíme citlivé informace o jakémkoli zákazníkovi a chceme zobrazit pouze primární podrobnosti, můžeme vytvořit pohled.
Tento článek vysvětluje Vytvořit zobrazení , Nahradit zobrazení a Rozpustit zobrazení použití příkazů na serveru MySQL.
Ukázka Databáze Nastavení
Pro ukázku jsem nainstaloval MySQL Server a vytvořil fiktivní databázi s názvem EltechDB . V této databázi jsem vytvořil tabulku s názvem tblemployee .
Následující dotaz vytvoří EltechDB databáze:
Create database EltechDB;
Následující dotaz vytvoří tblemployee tabulka:
CREATE TABLE tblemployees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
);
Do tblemployee jsem vložil nějaké fiktivní záznamy tabulky pomocí následujícího dotazu:
INSERT INTO `EltechDB`.`tblemployees`
VALUES
(10001,'1953-09-02','Georgi','Facello','M','1986-06-26'),
(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21'),
(10003,'1959-12-03','Parto','Bamford','M','1986-08-28'),
(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01'),
(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12'),
(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02'),
(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10'),
(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15'),
(10009,'1952-04-19','Sumant','Peac','F','1985-02-18'),
(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
Nyní si ujasněme příkazy pro správu pohledů MySQL.
Jak vytvořit zobrazení v MySQL
Příkaz Create View vytvoří nový pohled v databázi. Syntaxe je následující:
Create View view_name
As
Select * from base_table
Zde:
- název_zobrazení je požadovaný název pohledu.
- Vyberte * z je dotaz, který generuje zobrazení pomocí base_table . Dotaz je uveden za AS klíčové slovo.
Příklad syntaxe vytvoření zobrazení MySQL
Předpokládejme, že chceme vytvořit pohled, který vyplní seznam zaměstnanců. Definice pohledu je následující:
Create view vwEmployees
as
select * from tblemployees;
Pro přístup k datům Pohledu můžeme použít dotaz SELECT. Chcete-li zobrazit data vwEmployees , spusťte následující dotaz:
mysql> select * from vwEmployees;
Výstup:
Filtrujte data pohledu pomocí klauzule WHERE
Výstup View můžeme filtrovat pomocí klauzule WHERE. V našem případě chceme získat seznam žen zaměstnanci od vwEmployees . Dotaz je následující:
mysql> select * from vwEmployees where gender='F';
Výstup dotazu je:
Vezměme si další příklad. Chceme získat seznam zaměstnanců, jejichž číslo zaměstnance je menší než 10005 . Dotaz je následující:
mysql> select * from vwemployees where emp_no<10005;
Výstup dotazu:
Použijte agregační funkci v zobrazení
Můžeme použít agregační funkce na View.
Zde chceme vyplnit počet zaměstnanců a zaměstnanců z vwEmployees Pohled. Nejprve použijeme funkci POČET k získání počtu zaměstnanců. Potom použijeme klauzuli GROUP BY k seskupení výstupu na základě sloupce pohlaví. Dotaz je následující:
mysql> select gender, count(emp_no)as 'Total Employees' from vwEmployees group by gender;
Výstup dotazu:
Použijte funkci Datum-Čas v zobrazení
Na výstupu View můžeme použít funkci datum-čas. Pojďme získat seznam zaměstnanců, jejichž rok nástupu je větší nebo roven 1990. Dotaz je následující:
mysql> select * from vwemployees where Year(hire_date)>=1990;
Výstup dotazu:
Použijte funkci Control-Flow v zobrazení
Na výstupu View můžeme použít funkci CASE nebo IF.
Hodnotu pohlaví vytiskneme v nějakém smysluplném formátu. Výstup sloupce pohlaví vráceného zobrazením je buď M, nebo F. Místo tisku M musí dotaz vrátit Muž . Podobně místo tiskového F musí dotaz vrátit Žena . Dotaz je následující:
mysql> Select first_name, last_name, case when gender='M' then 'Male' when gender ='F' then 'Female' end as 'Gender', hire_date from vwEmployees;
Výstup dotazu:
Přečtěte si více o tom, jak vytvořit zobrazení v SQL.
Nahradit příkaz zobrazení
REPLACE VIEW se používá ke změně definice pohledu. Klíčová slova CREATE VIEW a REPLACE VIEW se používají společně. Syntaxe je následující:
Create or replace View view_name
As
Select * from base_table
Zde:
- Vytvořit nebo nahradit zobrazení: Tato klíčová slova slouží k vytvoření nebo nahrazení stávajícího výběru dat. Když spustíme příkaz create nebo replacement view, MySQL zkontroluje, zda v databázi existuje. Pokud pohled existuje, změní definici pohledu pomocí dotazu zadaného za klíčovým slovem AS. Pokud zobrazení neexistuje, vytvoří nový pohled pomocí dotazu zadaného za klíčovým slovem AS.
- název_zobrazení je požadovaný název pohledu.
- Vyberte * z je dotaz, který se používá ke generování pohledu pomocí base_table . Dotaz je uveden za AS klíčové slovo.
Poznámka: Klíčová slova Vytvořit nebo Nahradit zobrazení vytvoří nový pohled nebo změní existující definici pohledu.
Zapište název zobrazení do pole ‘database_name’.’view_name’ formát . Pokud databázi neurčíte, můžete skončit vytvořením pohledu v jiné databázi.
Příklad MySQL CREATE View nebo MySQL REPLACE View příkazů
Chceme zobrazovat pouze jméno, příjmení a pohlaví zaměstnanců. Také chceme sloupcům poskytnout vhodná jména. Například first_name a příjmení hodnoty sloupců by měly být kombinovány a název sloupce musí být jménem zaměstnance. SQL dotaz by měl vypadat následovně:
mysql> create or replace view vwEmployees(EmployeeName,gender) as select concat(first_name, " ",last_name),gender from tblEmployees;
Spuštěním následujícího dotazu SELECT zobrazíte data od vwEmployees :
mysql> select * from vwEmployees
Výstup dotazu:
Jak vidíte, first_name a příjmení hodnoty jsou sloučeny v Jméno zaměstnance sloupec označující, že definice pohledu byla aktualizována.
Příkaz MySQL DROP View
Klíčové slovo DROP View slouží k odstranění pohledu z databáze. Syntaxe je následující:
Drop View ‘database_name’.’view_name’
V syntaxi název_zobrazení je název pohledu, který chcete zrušit.
Zanechme vwEmployees Prohlížejte pomocí příkazu DROP View. Proveďte následující dotaz:
mysql> DROP VIEW `eltechdb`.`vwemployees`;
Chcete-li ověřit, že zobrazení bylo zrušeno, spusťte následující dotaz:
mysql> SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW' and table_schema='EltechDB';
Výstup:
Dotaz vrátil nula řádků, což znamená, že zobrazení bylo odstraněno.
Shrnutí
Tento článek vysvětlil a demonstroval pohledy MySQL a způsoby vytváření a správy těchto pohledů. Objasnil také použití příkazů CREATE VIEW, REPLACE View a DROP View. CREATE View se používá k vytvoření pohledu, REPLACE View změní definici pohledu a DROP View smaže pohled.