Een SQL-view is een virtuele tabel of een resultaatset die is gegenereerd door de SELECT-query. In tegenstelling tot fysieke tabellen slaan views geen gegevens op in een database. Wanneer we de SELECT-query uitvoeren om de gegevens te vullen, voert deze een query uit die de weergave maakt (Bekijkdefinitie).
Wat is View in MySQL
Stel dat u een complexe SQL-query gebruikt die gebruikmaakt van meerdere joins en complexe bedrijfslogica. U gebruikt deze query vaak in de toepassingscode. Vanwege zakelijke vereisten moet u die querylogica echter wijzigen. De wijzigingen die in een zoekopdracht worden aangebracht, moeten in de hele toepassing worden weerspiegeld.
In dergelijke gevallen verdient het de voorkeur om een SQL-view te maken en de bedrijfslogica daarin in te kapselen. Bovendien, wanneer we de querydefinitie willen wijzigen, kunnen we de definitie van de weergave wijzigen in plaats van wijzigingen aan te brengen in de toepassing.
De weergaven zijn ook van toepassing om de werkelijke naam en details van de tabel te verbergen. Als we gevoelige informatie van een klant in de tabel opslaan en alleen de primaire details willen weergeven, kunnen we een weergave maken.
In dit artikel wordt de Weergave maken . uitgelegd , Weergave vervangen en Drop View gebruik van instructies op de MySQL-server.
Voorbeeld Database Instellen
Voor de demonstratie heb ik MySQL Server geïnstalleerd en een dummy-database gemaakt met de naam EltechDB . In die database heb ik een tabel gemaakt met de naam tblemployee .
De volgende query creëert de EltechDB databank:
Create database EltechDB;
De volgende zoekopdracht maakt een tblemployee tafel:
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)
);
Ik heb enkele dummy-records ingevoegd in de tblemployee tabel met de volgende query:
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');
Laten we nu de verklaringen verduidelijken om de MySQL-weergaven te beheren.
Hoe maak je een weergave in MySQL
De instructie Create View maakt een nieuwe view in een database. De syntaxis is als volgt:
Create View view_name
As
Select * from base_table
Hier:
- view_name is de gewenste naam van de weergave.
- De selecteer * van is de query die de weergave genereert met behulp van base_table . De zoekopdracht wordt gespecificeerd na de AS zoekwoord.
MySQL Create View Syntax-voorbeeld
Stel dat we een weergave willen maken die de lijst met werknemers vult. De definitie van de weergave is als volgt:
Create view vwEmployees
as
select * from tblemployees;
Om toegang te krijgen tot de gegevens van de View, kunnen we de SELECT-query gebruiken. Om de gegevens van vwEmployees te bekijken , voer de volgende query uit:
mysql> select * from vwEmployees;
Uitgang:
Filter de gegevens van de weergave met behulp van de WHERE-clausule
We kunnen de weergave-uitvoer filteren met behulp van de WHERE-component. In ons geval willen we de lijst met vrouwen . ophalen werknemers van de vwEmployees . De vraag is als volgt:
mysql> select * from vwEmployees where gender='F';
De uitvoer van de query is:
Laten we nog een voorbeeld nemen. We willen de lijst van de werknemers ophalen van wie het werknemersnummer kleiner is dan 10005 . De vraag is als volgt:
mysql> select * from vwemployees where emp_no<10005;
Uitvoer van zoekopdracht:
Gebruik de aggregatiefunctie op de weergave
We kunnen de aggregatiefuncties op de View gebruiken.
Hier willen we het aantal mannelijke en vrouwelijke werknemers invullen van de vwEmployees Weergave. Eerst gebruiken we de COUNT-functie om het aantal werknemers te krijgen. Vervolgens gebruiken we de GROUP BY-clausule om de uitvoer te groeperen op basis van de geslachtskolom. De vraag is als volgt:
mysql> select gender, count(emp_no)as 'Total Employees' from vwEmployees group by gender;
Uitvoer van zoekopdracht:
Gebruik de datum-tijdfunctie op de weergave
We kunnen de datum-tijd-functie gebruiken op de weergave-uitvoer. Laten we de lijst opvragen van de werknemers van wie het jaar van indiensttreding groter of gelijk is aan 1990. De vraag is als volgt:
mysql> select * from vwemployees where Year(hire_date)>=1990;
Uitvoer van zoekopdracht:
Gebruik de Control-Flow-functie op de weergave
We kunnen de CASE- of IF-functie gebruiken op de uitvoer van de View.
We drukken de waarde van het geslacht af in een betekenisvol formaat. De uitvoer van de geslachtskolom die wordt geretourneerd door de weergave is M of F. In plaats van M af te drukken, moet de zoekopdracht Man retourneren . Evenzo, in plaats van de F-afdruk, moet de zoekopdracht Vrouw . teruggeven . De vraag is als volgt:
mysql> Select first_name, last_name, case when gender='M' then 'Male' when gender ='F' then 'Female' end as 'Gender', hire_date from vwEmployees;
Uitvoer van zoekopdracht:
Lees meer over het maken van een weergave in SQL.
Bekijk verklaring vervangen
De VERVANG VIEW wordt gebruikt om de definitie van een view te wijzigen. De trefwoorden CREATE VIEW en REPLACE VIEW worden samen gebruikt. De syntaxis is als volgt:
Create or replace View view_name
As
Select * from base_table
Hier:
- Weergave maken of vervangen: Deze trefwoorden dienen om de bestaande View te creëren of te vervangen. Wanneer we de instructie create of Replace uitvoeren, controleert MySQL of deze in de database bestaat. Als de weergave bestaat, wordt de weergavedefinitie gewijzigd met behulp van de query die is opgegeven na het AS-sleutelwoord. Als de weergave niet bestaat, wordt een nieuwe weergave gemaakt met behulp van de zoekopdracht die is opgegeven na het AS-sleutelwoord.
- view_name is de gewenste naam van de weergave.
- De selecteer * van is de query die wordt gebruikt om de weergave te genereren met behulp van base_table . De zoekopdracht wordt gespecificeerd na de AS zoekwoord.
Opmerking: Zoekwoorden maken of vervangen maak een nieuwe weergave of wijzig de bestaande weergavedefinitie.
Schrijf de weergavenaam in de ‘database_name’.’view_name’ formaat . Als u de database niet opgeeft, kan het zijn dat u de weergave in een andere database maakt.
Voorbeeld van MySQL CREATE View of MySQL REPLACE View Statements
We willen alleen de voornaam, achternaam en het geslacht van medewerkers weergeven. We willen ook de juiste namen aan de kolommen geven. Bijvoorbeeld de voornaam en achternaam kolomwaarden moeten worden gecombineerd en de kolomnaam moet de naam van de werknemer zijn. De SQL-query moet als volgt zijn:
mysql> create or replace view vwEmployees(EmployeeName,gender) as select concat(first_name, " ",last_name),gender from tblEmployees;
Voer de volgende SELECT-query uit om de gegevens te bekijken van vwEmployees :
mysql> select * from vwEmployees
Uitvoer van zoekopdracht:
Zoals je kunt zien, is de first_name en achternaam waarden worden gecombineerd in de EmployeeName kolom die aangeeft dat de View-definitie is bijgewerkt.
De MySQL DROP View-verklaring
Het trefwoord DROP View dient om de View uit de database te verwijderen. De syntaxis is als volgt:
Drop View ‘database_name’.’view_name’
In de syntaxis, view_name is de naam van de weergave die u wilt verwijderen.
Laten we de vwEmployees laten vallen Bekijk met behulp van de DROP View-instructie. Voer de volgende vraag uit:
mysql> DROP VIEW `eltechdb`.`vwemployees`;
Voer de volgende query uit om te controleren of de weergave is verwijderd:
mysql> SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW' and table_schema='EltechDB';
Uitgang:
De zoekopdracht leverde nul rijen op, wat aangeeft dat de weergave is verwijderd.
Samenvatting
In dit artikel werden de MySQL-weergaven uitgelegd en gedemonstreerd en de manieren om deze weergaven te maken en te beheren. Het verduidelijkte ook het gebruik van de CREATE VIEW, REPLACE View en DROP View statements. CREATE View wordt gebruikt om een view te maken, REPLACE View wijzigt de definitie van de View en DROP View verwijdert de View.