sql >> Databáze >  >> RDS >> Mysql

MySQL Vytvářejte příkazy View, Nahraďte View a Drop View s příklady

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.


  1. Rekurzivní CTE spojuje pole s rodiči z libovolného bodu

  2. CHYBA:Chyba 1005:Nelze vytvořit tabulku (chyba:121)

  3. Jak klíčová slova IMMUTABLE, STABLE a VOLATILE ovlivňují chování funkce?

  4. PostgreSQL:Vyberte data s lajkem v poli časového razítka