En SQL-visning er en virtuel tabel eller et resultatsæt genereret af SELECT-forespørgslen. I modsætning til fysiske tabeller gemmer visninger ikke data i en database. Når vi kører SELECT-forespørgslen for at udfylde dataene, udfører den en forespørgsel, der opretter visningen (Vis definition).
Hvad er View i MySQL
Antag, at du har en kompleks SQL-forespørgsel, der bruger flere joinforbindelser og kompleks forretningslogik. Du bruger ofte denne forespørgsel i applikationskoden. På grund af forretningskrav skal du dog ændre denne forespørgselslogik. Ændringerne i en forespørgsel skal afspejles i hele applikationen.
I sådanne tilfælde er det at foretrække at oprette en SQL-visning og indkapsle forretningslogikken i den. Desuden, når vi ønsker at ændre forespørgselsdefinitionen, kan vi ændre visningens definition i stedet for at foretage ændringer i applikationen.
Visningerne gælder også for at skjule bordets faktiske navn og detaljer. Hvis vi gemmer en kundes følsomme oplysninger i tabellen og kun ønsker at vise de primære detaljer, kan vi oprette en visning.
Denne artikel vil forklare Opret visning , Erstat visning og Drop View sætningsbrug i MySQL-serveren.
Eksempel Database Opsætning
Til demonstrationen har jeg installeret MySQL Server og oprettet en dummy-database ved navn EltechDB . I den database har jeg oprettet en tabel med navnet tblemployee .
Følgende forespørgsel opretter EltechDB database:
Create database EltechDB;
Følgende forespørgsel opretter en medarbejder tabel:
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)
);
Jeg har indsat nogle dummy-poster i medarbejderen tabel ved hjælp af følgende forespørgsel:
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');
Lad os nu præcisere erklæringerne for at administrere MySQL-visningerne.
Sådan opretter du visning i MySQL
Opret visningserklæringen opretter en ny visning i en database. Syntaksen er følgende:
Create View view_name
As
Select * from base_table
Her:
- visningsnavn er det ønskede navn på visningen.
- Den vælg * fra er den forespørgsel, der genererer visningen ved hjælp af base_table . Forespørgslen er angivet efter AS søgeord.
Eksempel på MySQL Create View Syntaks
Antag, at vi vil oprette en visning, der udfylder listen over medarbejdere. Definitionen af visningen er følgende:
Create view vwEmployees
as
select * from tblemployees;
For at få adgang til dataene i visningen kan vi bruge SELECT-forespørgslen. For at se data for vwEmployees , kør følgende forespørgsel:
mysql> select * from vwEmployees;
Output:
Filtrer dataene for visningen ved hjælp af WHERE-klausulen
Vi kan filtrere View-outputtet ved hjælp af WHERE-sætningen. I vores tilfælde ønsker vi at hente listen over kvinder medarbejdere fra vwEmployees . Forespørgslen er som følger:
mysql> select * from vwEmployees where gender='F';
Forespørgselsoutputtet er:
Lad os tage et andet eksempel. Vi ønsker at hente listen over de medarbejdere, hvis medarbejdernummer er mindre end 10005 . Forespørgslen er som følger:
mysql> select * from vwemployees where emp_no<10005;
Forespørgselsoutput:
Brug Aggregate-funktionen på visningen
Vi kan bruge de samlede funktioner på View.
Her ønsker vi at udfylde antallet af mandlige og kvindelige medarbejdere fra vwEmployees Udsigt. Først bruger vi COUNT-funktionen til at få optællingen af medarbejdere. Derefter bruger vi GROUP BY-sætningen til at gruppere outputtet baseret på kønskolonnen. Forespørgslen er som følger:
mysql> select gender, count(emp_no)as 'Total Employees' from vwEmployees group by gender;
Forespørgselsoutput:
Brug dato-tids-funktionen på visningen
Vi kan bruge dato-tid-funktionen på View-output. Lad os hente listen over de medarbejdere, hvis tiltrædelsesår er større eller lig med 1990. Forespørgslen er som følger:
mysql> select * from vwemployees where Year(hire_date)>=1990;
Forespørgselsoutput:
Brug Control-Flow-funktionen på visningen
Vi kan bruge CASE- eller IF-funktionen på outputtet af View.
Vi udskriver værdien af kønnet i et eller andet meningsfuldt format. Outputtet af kønskolonnen, der returneres af visningen, er enten M eller F. I stedet for at udskrive M, skal forespørgslen returnere Mand . På samme måde skal forespørgslen i stedet for det udskrevne F returnere Kvinde . Forespørgslen er som følger:
mysql> Select first_name, last_name, case when gender='M' then 'Male' when gender ='F' then 'Female' end as 'Gender', hire_date from vwEmployees;
Forespørgselsoutput:
Læs mere, hvordan du opretter visning i SQL.
Erstat visningserklæring
REPLACE VIEW bruges til at ændre definitionen af en visning. Nøgleordene CREATE VIEW og REPLACE VIEW bruges sammen. Syntaksen er følgende:
Create or replace View view_name
As
Select * from base_table
Her:
- Opret eller erstat View: Disse nøgleord tjener til at oprette eller erstatte den eksisterende visning. Når vi kører create eller replace view-sætningen, kontrollerer MySQL, om den findes i databasen. Hvis visningen findes, ændrer den visningsdefinitionen ved hjælp af den forespørgsel, der er angivet efter AS-nøgleordet. Hvis visningen ikke eksisterer, opretter den en ny visning ved hjælp af den forespørgsel, der er angivet efter AS-nøgleordet.
- visningsnavn er det ønskede navn på visningen.
- Den vælg * fra er den forespørgsel, der bruges til at generere visningen ved hjælp af base_table . Forespørgslen er angivet efter AS søgeord.
Bemærk: Opret eller erstat visningsnøgleord opret en ny visning, eller skift den eksisterende visningsdefinition.
Skriv visningsnavnet i 'databasenavn'.'visningsnavn' format . Hvis du ikke angiver databasen, kan du ende med at oprette visningen i en anden database.
Eksempel på MySQL CREATE View- eller MySQL REPLACE View-udsagn
Vi ønsker kun at vise medarbejdernes fornavn, efternavn og køn. Vi ønsker også at give passende navne til kolonnerne. For eksempel fornavn og efternavn kolonneværdier skal kombineres, og kolonnenavnet skal være medarbejderens navn. SQL-forespørgslen skal være som følger:
mysql> create or replace view vwEmployees(EmployeeName,gender) as select concat(first_name, " ",last_name),gender from tblEmployees;
Kør følgende SELECT-forespørgsel for at se dataene fra vwEmployees :
mysql> select * from vwEmployees
Forespørgselsoutput:
Som du kan se, er fornavn og efternavn værdier kombineres i EmployeeName kolonne, der angiver, at visningsdefinitionen er blevet opdateret.
MySQL DROP View Statement
Nøgleordet DROP View tjener til at slette visningen fra databasen. Syntaksen er følgende:
Drop View ‘database_name’.’view_name’
I syntaksen, visningsnavn er navnet på den visning, du vil slette.
Lad os droppe vwEmployees Vis ved hjælp af DROP View-erklæringen. Udfør følgende forespørgsel:
mysql> DROP VIEW `eltechdb`.`vwemployees`;
For at bekræfte, at visningen er blevet slettet, skal du køre følgende forespørgsel:
mysql> SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW' and table_schema='EltechDB';
Output:
Forespørgslen returnerede nul rækker, hvilket indikerer, at visningen er blevet slettet.
Oversigt
Denne artikel forklarede og demonstrerede MySQL-visningerne og måderne at skabe og administrere disse visninger på. Det præciserede også brugen af CREATE VIEW-, REPLACE View- og DROP View-sætningerne. CREATE View bruges til at oprette en visning, REPLACE View ændrer visningens definition, og DROP View sletter visningen.