mysql create view tutorial with code examples
Denna MySQL Create View-handledning Förklarar allt om hur du skapar en vy i MySQL med hjälp av olika klausuler och exempel. Det täcker också hur man släpper och hanterar vyer:
I MySQL är view en virtuell tabell som gör det möjligt för oss att titta på data i tabellen utan att blockera tabellen från att komma åt av andra program och därmed hjälpa oss att undvika dödläge.
Visningar skapas ovanpå en eller flera tabeller som innehåller data. Innan du går vidare, var god notera att vi använder MySQL version 8.0 .
Vad du kommer att lära dig:
MySQL Skapa vy
Syntax:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Syntaxförklaring:
- Syntaxen börjar med nyckelordet “CREATE VIEW” och informerar därmed MySQL-servern om vilken typ av aktivitet som ska utföras. Detta är ett obligatoriskt nyckelord och kan inte utelämnas.
- REPLACE är en valfri parameter. Vi kan använda detta medan vi arbetar med en befintlig vy.
- Nästa kommer namnet på vyn. Det ska vara unikt precis som namnen på tabeller och kolumner.
- Välj sedan kolumnerna från tabellen. En vy kan innehålla alla kolumner i den underliggande tabellen eller endast några utvalda.
- Därefter kommer namnet på tabellen där vyn måste utföras. Detta är obligatoriskt och kan inte utelämnas.
- Sedan kommer WHERE-villkoret, som begränsar eller filtrerar antalet målrader som CREATE VIEW-åtgärden måste tillämpas på. WHERE finns också ett nyckelord, men ett valfritt.
WHERE-klausulen är dock betydelsefull. Om det inte nämns eller om villkoret inte är korrekt inställt kommer antingen hela tabellen eller icke-obligatoriska rader att vara en del av vyn.
MySQL Create View Exempel
Nedan visas en provtabell skapad i MYSQL.
Schemans namn: stilla
Tabellnamn: anställda
Kolumnnamn:
empNum : Innehåller heltalsvärden för anställd.
efternamn : Håller varcharvärden för anställdas efternamn.
förnamn : Innehåller varcharvärden för den anställdas förnamn.
e-post : Håller varchar-värden för den anställdes e-post-ID.
avd : Har varchar för avdelnings-ID som en anställd tillhör.
lön : Har decimalvärden för lönen för varje anställd.
start datum : Håller datumvärden för anställdas anslutningsdatum.
Schemans namn: stilla
Tabellnamn: avdelningar
Kolumnnamn:
deptNum; Innehåller varchar för avdelnings-ID inom en organisation.
stad: Innehåller namnet på staden där avdelningarna arbetar.
Land: Innehåller namnet på det land som motsvarar staden.
bonus Innehåller procentsatsen för bonusen.
MySQL Simple Skapa en vy
Låt oss nu skapa en vy ovanpå tabellen ovan.
Nedan följer frågan.
SELECT-klausulen kan vara med specifika kolumnnamn eller så kan vi använda “*” för att få alla kolumner. En gång skapar vi en vy, vi kan inte lägga till eller ta bort kolumnerna. Om vi vill lägga till eller ta bort kolumner måste vi antingen skapa en ny vy eller ersätta den befintliga vyn.
Utdatauttrycket visar att SQL-uttalanden CREATE VIEW har utförts framgångsrikt. Det står också att inga rader har påverkats. Detta innebär att när en ny rad skapas påverkar den inte data i den underliggande tabellen.
Låt oss nu fråga vyn.
Fråga:
CREATE VIEW employees_view AS SELECT empNum, lastName, firstName, email, deptNum, salary, start_date FROM employees ; SELECT empNum, firstName, lastName, email, deptNum, salary, start_date FROM employees_view ;
Resultatet satt:
empNum | efternamn | förnamn | e-post | avd | lön | start datum |
---|---|---|---|---|---|---|
1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494.4 | 0001-01-01 |
1001 | Andrews | Jack | ja@gmail.com | 1 | 3182,7 | 0001-01-01 |
1002 | Schwatz | Mikrofon | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
1003 | Langley | Margaret | margaret.langley@gmail.com | två | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | läsa | Peter | pl@gmail.com | två | 14332,5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | två | 16537.5 | 0001-01-01 |
1009 | Kopp | Harry | hb@gmail.com | 5 | 30645.6 | 0001-01-01 |
1011 | Hanks | Tom | th@gmail.com | NULL | 10100 | 0001-01-01 |
1012 | Luther | Martin | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 | Branson | John | jb@gmail.com | två | 15000 | 0001-01-01 |
1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | Eve | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Obligation | Nolan | nb@gmail.com | två | 15000 | 2019-09-13 |
Skapa vy med GROUP BY och ORDER BY
Låt oss anta ett scenario där vi behöver få den totala lönen, avdelningsvis.
Nedan följer frågan:
I stället för att köra denna fråga i tabellen varje gång behöver vi informationen, det är bättre att fråga vyn eftersom det kommer att konsumera färre databaskällor.
Låt oss nu se innehållet i vår uppfattning. Vi kommer att hitta hur mycket varje avdelning skickar till sina anställda när det gäller löner.
Fråga:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Resultatet satt:
avd | summa (lön) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | två | Charlotte | Förenta staterna | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
3 | 42994.4 | |||||
två | 69690 | |||||
1 | 44096.2 | |||||
NULL | 10100 |
NULL i deptNum indikerar att en anställd inte är en del av någon avdelning utan är på organisationens löner.
MySQL Skapa vy med JOIN
Låt oss anta att vi vill få data om avdelningen, staden den är baserad på och den bonus som erbjuds sina anställda. Vi behöver denna information för varje anställd.
För att uppnå detta använder vi nyckelordet JOIN för att få data från avdelningar och anställda.
Låt oss ta en titt på frågan och dess resultat.
Vi kan använda olika typer av JOIN här, som INNER JOIN, VÄNSTER YTTRE JOIN, RIGHT YTER JOIN eller FULL YTRE JOIN beroende på vårt krav.
Fråga:
CREATE VIEW join_view AS SELECT A.empNum, A.lastName, A.firstName, A.deptNum, B.city, B.country, B.bonus FROM employees A INNER JOIN departments B USING (deptNum) ; SELECT * FROM join_view ;
Låt oss nu utföra en SELECT-fråga på den här vyn för att se utdata:
Resultatet satt:
empNum | efternamn | förnamn | avd | stad | Land | bonus |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | 1 | New York | Förenta staterna | 3 |
1002 | Schwatz | Mikrofon | 1 | New York | Förenta staterna | 3 |
1004 | Harera | Sandra | 1 | New York | Förenta staterna | 3 |
1014 | Murray | Keith | 1 | New York | Förenta staterna | 3 |
1003 | Langley | Margaret | två | Charlotte | Förenta staterna | 5 |
1005 | läsa | Peter | två | Charlotte | Förenta staterna | 5 |
1015 | Branson | John | två | Charlotte | Förenta staterna | 5 |
1018 | Obligation | Nolan | två | Charlotte | Förenta staterna | 5 |
1008 | Bailey | Oliver | 3 | Chicago | Förenta staterna | 8 |
1012 | Luther | Martin | 3 | Chicago | Förenta staterna | 8 |
1017 | Johnson | Eve | 3 | Chicago | Förenta staterna | 8 |
1016 | Martin | Richard | 4 | London | England | 10 |
1009 | Kopp | Harry | 5 | Berlin | Tyskland | 13 |
Skapa vy med hjälp av underfråga
I denna typ av skapa vyuttryck försöker vi hämta värdet på en kolumn där klausulen är baserad på utdata från en underfråga. Säg, vi måste hitta alla de anställda vars lön är högre än organisationens genomsnittliga lön.
Låt oss se frågan:
Fråga:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Resultatet satt:
empNum | efternamn | förnamn | lön |
---|---|---|---|
1018 | Obligation | Nolan | 15000 |
1005 | läsa | Peter | 14332,5 |
1006 | Keith | Jenny | 16537.5 |
1008 | Bailey | Oliver | 24494.4 |
1009 | Kopp | Harry | 30645.6 |
1014 | Murray | Keith | 25000 |
1015 | Branson | John | 15000 |
Hantera vyer
Genom att använda vyn Alter View eller Create / Replace kan vi ändra / ersätta alla vyer. Att använda ALTER VIEW uttryckligen för att kompilera en vy är inte giltigt.
Om du har ALTER NOY Table-behörigheter eller om vyn finns i ditt schema kan du använda ALTER VIEW Statement.
bästa DVD-dekrypteraren för Windows 10
Genom att använda frågan Alter View kan vi hitta rekompileringsfelen före körtiden. Att använda ALTER VIEW-uttalandet kan påverka det andra objektet / vyn som beror på det. Så vi kan kompilera en vy igen efter ändring.
Vi kan omdefiniera en vy med Skapa vy och ersätta den befintliga vyn med ersättningsfrågan.
Till exempel, överväga anställdsvy. Här har vi efternamn och förnamn kolumner tillsammans med några andra. Tänk på att vi har ett krav att slå samman kolumnerna förnamn och efternamn.
Nedan visas ögonblicksbilden av vyn innan ALTER-frågan körs.
Låt oss nu utföra ALTER VIEW-frågan för att slå samman förnamn och efternamn.
Frågan ges nedan:
Fråga:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Låt oss se innehållet i anställdens syn nu:
Om du märker har vi inte två separata kolumner för namn. Istället har vi bara en kolumn som har både förnamn och efternamn sammanfogade.
Läs mer = >> MySQL CONCAT-funktion
Fråga:
SELECT * FROM employees_view;
Resultatet satt:
empNum | empName | e-post | avd | lön | start datum |
---|---|---|---|---|---|
1008 | Oliver Bailey | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
1001 | Jack Andrews | ja@gmail.com | 1 | 3182,7 | 0001-01-01 |
1002 | Mike Schwatz | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
1003 | Margaret Langley | margaret.langley@gmail.com | två | 8820 | 0001-01-01 |
1004 | Sandra harera | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | två | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | två | 16538 | 0001-01-01 |
1009 | Harry Beaker | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1011 | tom Hanks | th@gmail.com | 10100 | 0001-01-01 | |
1012 | Martin Luther | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Keith Murray | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 | John Branson | jb@gmail.com | två | 15000 | 0001-01-01 |
1016 | Richard Martin | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Eve Johnson | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Nolan Bond | nb@gmail.com | två | 15000 | 2019-09-13 |
Släppa en vy
Vi kan släppa en vy med uttalandet DROP VIEW. Man kan använda en DROP VIEW om de har DROP NÅGOT visningsbehörighet eller annars borde det finnas i deras schema. Den hängande vyn påverkar inte den underliggande tabellen som vyn har byggts på eller data i den tabellen.
Fråga:
DROP VIEW (view name);
Vanliga frågor
F # 1) Hur skapar jag vyer i MySQL?
Svar: Det finns flera sätt att skapa vyer i MySQL. Vi har gått igenom fyra olika sätt som visas nedan.
1. MySQL Simple Skapa en vy
2. MySQL Skapa vy med GROUP BY och ORDER BY
3. MySQL Skapa vy med JOIN
4. MySQL Skapa vy med hjälp av undersökning
F # 2) Vad är en vy i MySQL?
Svar: Visningar är som förutförda frågor lagrade i logisk struktur så att vi inte behöver köra de komplexa frågorna på bordet igen. Vi kan bara fråga vyn och få våra data utan att påverka tabellen.
F # 3) Kan vi använda JOIN på vyer medan vi skapar vyer?
Svar: Ja, JOIN-uttalanden kan användas på vyer, på ett liknande sätt som vi använder det på tabellerna.
F # 4) Kan vi skapa en vy från en annan vy?
Svar: Visningar fungerar i huvudsak som tabeller, men som en virtuell. Således, hur vi skapar vyer ovanpå en tabell, kan vi också skapa vyer ovanpå en annan vy.
F # 5) Varför använder vi vyer?
Svar: Som ett resultat av SQL-frågan skapar vyn en logisk tabell. Vi använder vyer av följande skäl.
- Genom att använda vyn kan vi begränsa synligheten för rader och kolumner (med hjälp av avsnittet Välj och var) för relevanta uppgifter.
- Visningar används när vi kombinerar rader och kolumner (med Union och gå med) från flera tabeller.
- För att få en mer tydlig presentation av aggregerande rader (med hjälp av Gruppera efter och ha) i en tabell med finare detaljer.
- Visningar används när du byter namn på eller avkodar antingen kolumner (med AS) eller rader (med JOIN, IF, CASE eller Oracles DECODE).
- Genom att kamma något av ovanstående med säkerhetsinställningar kan vi kontrollera om användaren endast har tillgång till vad de är auktoriserade.
Slutsats
I den här handledningen utforskade vi olika sätt att skapa en vy i MySQL.
1. MySQL Simple Skapa en vy
2. MySQL Skapa vy med GROUP BY och ORDER BY
3. MySQL Skapa vy med JOIN
4. MySQL Skapa vy med hjälp av undersökning
Vi kan välja något av dessa alternativ beroende på projektkraven.
Ytterligare läsning = >> MySQL CREATE TABLE
Happy Learning !!
Rekommenderad läsning
- MySQL ALTER TABLE - Hur man lägger till kolumn i en tabell i MySQL
- MySQL CONCAT och GROUP_CONCAT-funktioner med exempel
- MySQL-RÄKNING OCH RÄKNADSDISTINKT med exempel
- MySQL Skapa databas - Hur man skapar en databas i MySQL
- MySQL CREATE USER: Hur man skapar ny användare i MySQL
- MySQL Skapa vyhandledning med kodexempel
- MySQL GROUP BY Clause - Handledning med exempel
- MySQL JOIN Handledning: Inre, yttre, kors, vänster, höger och själv