En SQL-vy är en virtuell tabell eller en resultatuppsättning som genereras av SELECT-frågan. Till skillnad från fysiska tabeller lagrar inte vyer data i en databas. När vi kör SELECT-frågan för att fylla i data, kör den en fråga som skapar vyn (Visa definition).
Vad är View i MySQL
Anta att du har en komplex SQL-fråga som använder flera kopplingar och komplex affärslogik. Du använder den här frågan i applikationskoden ofta. Men på grund av affärskrav måste du ändra den frågelogiken. Ändringarna som görs i en fråga måste återspeglas i hela applikationen.
I sådana fall är det att föredra att skapa en SQL-vy och kapsla in affärslogiken i den. När vi dessutom vill ändra frågedefinitionen kan vi ändra vyns definition istället för att göra ändringar i applikationen.
Synpunkterna gäller även för att dölja det faktiska namnet och detaljerna i tabellen. Om vi lagrar någon kunds känsliga information i tabellen och bara vill visa de primära detaljerna kan vi skapa en vy.
Den här artikeln kommer att förklara Skapa vyn , Ersätt vy och Släppvy satser användning i MySQL-servern.
Exempel Databas Inställningar
För demonstrationen har jag installerat MySQL Server och skapat en dummydatabas med namnet EltechDB . I den databasen har jag skapat en tabell som heter tblemployee .
Följande fråga skapar EltechDB databas:
Create database EltechDB;
Följande fråga skapar en anställd tabell:
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)
);
Jag har infogat några dummyposter i anställd tabell med följande fråga:
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');
Låt oss nu förtydliga uttalandena för att hantera MySQL-vyerna.
Hur man skapar vy i MySQL
Skapa vy-satsen skapar en ny vy i en databas. Syntaxen är följande:
Create View view_name
As
Select * from base_table
Här:
- view_name är det önskade namnet på vyn.
- Den välj * från är frågan som genererar vyn med bastabell . Frågan anges efter AS sökord.
Exempel på MySQL Create View Syntax
Anta att vi vill skapa en vy som fyller listan över anställda. Definitionen av vyn är följande:
Create view vwEmployees
as
select * from tblemployees;
För att komma åt data i vyn kan vi använda SELECT-frågan. För att se data från vwEmployees , kör följande fråga:
mysql> select * from vwEmployees;
Utdata:
Filtrera data i vyn med hjälp av WHERE-klausulen
Vi kan filtrera View-utgången med hjälp av WHERE-satsen. I vårt fall vill vi hämta listan över kvinnor anställda från vwEmployees . Frågan är som följer:
mysql> select * from vwEmployees where gender='F';
Frågeutgången är:
Låt oss ta ett annat exempel. Vi vill hämta listan över de anställda vars antal anställda är mindre än 10005 . Frågan är som följer:
mysql> select * from vwemployees where emp_no<10005;
Frågeutgång:
Använd den samlade funktionen på vyn
Vi kan använda de samlade funktionerna på vyn.
Här vill vi fylla i antalet manliga och kvinnliga anställda från vwEmployees Se. Först använder vi COUNT-funktionen för att få antalet anställda. Sedan använder vi GROUP BY-satsen för att gruppera utdata baserat på könskolumnen. Frågan är som följer:
mysql> select gender, count(emp_no)as 'Total Employees' from vwEmployees group by gender;
Frågeutgång:
Använd datum-tid-funktionen på vyn
Vi kan använda datum-tid-funktionen på View-utgången. Låt oss hämta listan över de anställda vars anställningsår är större eller lika med 1990. Frågan är som följer:
mysql> select * from vwemployees where Year(hire_date)>=1990;
Frågeutgång:
Använd Control-Flow-funktionen på vyn
Vi kan använda CASE- eller IF-funktionen på utgången av View.
Vi trycker värdet av könet i något meningsfullt format. Utdata från könskolumnen som returneras av vyn är antingen M eller F. Istället för att skriva ut M måste frågan returnera Man . På samma sätt måste frågan returnera Kvinna istället för det utskrivna F . Frågan är som följer:
mysql> Select first_name, last_name, case when gender='M' then 'Male' when gender ='F' then 'Female' end as 'Gender', hire_date from vwEmployees;
Frågeutgång:
Läs mer om hur du skapar vy i SQL.
Ersätt Visa uttalande
ERSÄTT VY används för att ändra definitionen av en vy. Nyckelorden CREATE VIEW och REPLACE VIEW används tillsammans. Syntaxen är följande:
Create or replace View view_name
As
Select * from base_table
Här:
- Skapa eller ersätt Visa: Dessa nyckelord tjänar till att skapa eller ersätta den befintliga vyn. När vi kör satsen create eller replace view kontrollerar MySQL om den finns i databasen. Om vyn finns ändrar den vyndefinitionen med hjälp av frågan som anges efter AS-nyckelordet. Om vyn inte finns skapar den en ny vy med hjälp av frågan som anges efter AS-nyckelordet.
- view_name är det önskade namnet på vyn.
- Den välj * från är frågan som används för att skapa vyn med bastabell . Frågan anges efter AS sökord.
Obs! Skapa eller ersätt vynyckelord skapa en ny vy eller ändra den befintliga vydefinitionen.
Skriv vynamnet i 'database_name'.'view_name' format . Om du inte anger databasen kan du skapa vyn i en annan databas.
Exempel på MySQL CREATE View eller MySQL REPLACE View Statements
Vi vill endast visa de anställdas förnamn, efternamn och kön. Vi vill också ge lämpliga namn till kolumnerna. Till exempel, förnamn och efternamn kolumnvärden ska kombineras och kolumnnamnet måste vara den anställdes namn. SQL-frågan ska vara följande:
mysql> create or replace view vwEmployees(EmployeeName,gender) as select concat(first_name, " ",last_name),gender from tblEmployees;
Kör följande SELECT-fråga för att se data från vwEmployees :
mysql> select * from vwEmployees
Frågeutgång:
Som du kan se är förnamn och efternamn värden kombineras i EmployeeName kolumn som indikerar att vydefinitionen har uppdaterats.
MySQL DROP View Statement
Nyckelordet DROP View tjänar till att ta bort View från databasen. Syntaxen är följande:
Drop View ‘database_name’.’view_name’
I syntaxen, view_name är namnet på vyn som du vill ta bort.
Låt oss släppa vwEmployees Visa med DROP View-satsen. Kör följande fråga:
mysql> DROP VIEW `eltechdb`.`vwemployees`;
För att verifiera att vyn har tagits bort, kör följande fråga:
mysql> SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW' and table_schema='EltechDB';
Utdata:
Frågan returnerade noll rader vilket indikerar att vyn har tagits bort.
Sammanfattning
Den här artikeln förklarade och demonstrerade MySQL-vyerna och sätten att skapa och hantera dessa vyer. Det förtydligade också användningen av CREATE VIEW-, REPLACE View- och DROP View-satserna. CREATE View används för att skapa en vy, REPLACE View ändrar vyns definition och DROP View tar bort vyn.