mysql create view tutorial with code examples
Denne MySQL Create View-vejledning forklarer alt om oprettelse af en visning i MySQL ved hjælp af forskellige klausuler og eksempler. Det dækker også, hvordan man dropper og administrerer visninger:
I MySQL er visning en virtuel tabel, der gør det muligt for os at se på dataene i tabellen uden at blokere for at få adgang til tabellen fra andre programmer og derved hjælpe os med at undgå blokeringer.
Visninger oprettes oven på en eller flere end en tabel, der indeholder data. Før du fortsætter, skal du være opmærksom på, at vi bruger MySQL version 8.0 .
Hvad du vil lære:
MySQL Opret visning
Syntaks:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Syntaks Forklaring:
- Syntaksen starter med nøgleordet “CREATE VIEW” og informerer derved MySQL-serveren om den type aktivitet, der skal udføres. Dette er et obligatorisk nøgleord og kan ikke udelades.
- REPLACE er en valgfri parameter. Vi kan bruge dette, mens vi arbejder på en eksisterende visning.
- Dernæst kommer navnet på udsigten. Det skal være unikt ligesom navnene på tabeller og kolonner.
- Vælg derefter kolonnerne fra tabellen. En visning kan have alle kolonnerne i den underliggende tabel eller kun nogle få udvalgte.
- Derefter kommer navnet på den tabel, som visningen skal udføres på. Dette er obligatorisk og kan ikke udelades.
- Derefter kommer WHERE-betingelsen, der begrænser eller filtrerer antallet af målrækker, hvor handlingen CREATE VIEW skal anvendes. WHERE er også et nøgleord, men et valgfrit.
WHERE-klausulen er dog vigtig. Hvis ikke nævnt, eller hvis betingelsen ikke er indstillet korrekt, vil enten hele tabellen eller ikke-krævede rækker være en del af visningen.
MySQL Opret visningseksempel
Nedenfor er en eksempeltabel oprettet i MYSQL.
Skema navn: pacific
Tabelnavn: medarbejdere
Kolonnenavne:
empNum : Indeholder heltalværdier for medarbejdernummeret.
efternavn : Indeholder varchar-værdier for medarbejderens efternavn.
fornavn : Indeholder varchar-værdier for medarbejderens fornavn.
e-mail : Indeholder varchar-værdier for medarbejderens e-mail-id.
deptNum : Har varchar til afdeling-ID, som en medarbejder tilhører.
løn : Indeholder decimalværdier af løn for hver medarbejder.
start dato : Indeholder datoværdier for medarbejderens tiltrædelsesdato.
Skema navn: pacific
Tabelnavn: afdelinger
Kolonnenavne:
deptNum; Har varchar til afdelingens ID inden for en organisation.
by: Indeholder navnet på den by, hvor afdelingerne arbejder fra.
Land: Indeholder navnet på det land, der svarer til byen.
bonus Indeholder den procentvise værdi af bonusen.
MySQL Simple Opret en visning
Lad os nu oprette en visning oven på ovenstående tabel.
Nedenfor er forespørgslen.
SELECT-klausulen kan være med specifikke kolonnenavne, eller vi kan bruge “*” for at få alle kolonnerne. Når vi opretter en visning, kan vi ikke tilføje eller slette kolonnerne. Hvis vi vil tilføje eller slette kolonner, skal vi enten oprette en ny visning eller erstatte denne eksisterende visning.
Outputerklæringen viser, at SQL-sætningerne CREATE VIEW er blevet udført med succes. Det siger også, at ingen rækker er blevet påvirket. Dette indebærer, at når en ny række oprettes, påvirker den ikke dataene i den underliggende tabel.
Lad os nu forespørge visningen.
Forespørgsel:
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 ;
ResultatSæt:
empNum | efternavn | fornavn | deptNum | løn | start dato | |
---|---|---|---|---|---|---|
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 | Mike | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
1003 | Langley | Margaret | margaret.langley@gmail.com | to | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | Læs | Peter | pl@gmail.com | to | 14332,5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | to | 16537.5 | 0001-01-01 |
1009 | Kop | Harry | hb@gmail.com | 5 | 30645.6 | 0001-01-01 |
1011 | Hanks | Tom | th@gmail.com | NUL | 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 | to | 15000 | 0001-01-01 |
1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | Eva | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Bånd | Nolan | nb@gmail.com | to | 15000 | 2019-09-13 |
Opret visning ved hjælp af GROUP BY og ORDER BY
Lad os antage et scenario, hvor vi har brug for at få det samlede lønbeløb, afdelingsklart.
Nedenfor er forespørgslen:
I stedet for at køre denne forespørgsel i tabellen hver gang, har vi brug for oplysningerne. Det er bedre at forespørge visningen, da dette vil forbruge færre databasekilder.
Lad os nu se indholdet af vores opfattelse. Vi finder ud af, hvor meget hver afdeling sender sine medarbejdere med hensyn til lønninger.
Forespørgsel:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Resultatsæt:
deptNum | sum (løn) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | to | Charlotte | Forenede Stater | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
3 | 42994.4 | |||||
to | 69690 | |||||
1 | 44096.2 | |||||
NUL | 10100 |
NULL i deptNum angiver, at en medarbejder ikke er en del af nogen afdeling, men er på lønningslister i organisationen.
MySQL Opret visning ved hjælp af JOIN
Lad os antage, at vi ønsker at få data om afdelingen, byen, den er baseret på, og den bonus, der tilbydes sine ansatte. Vi har brug for disse oplysninger til alle medarbejdere.
For at opnå dette bruger vi JOIN-nøgleordet til at hente data fra afdelinger og medarbejdertabel.
Lad os se på forespørgslen og dens output.
Vi kan bruge forskellige typer JOIN her, som INNER JOIN, VENSTRE YDRE JOIN, RIGHT OUTER JOIN eller FULL YTRE JOIN afhængigt af vores krav.
Forespørgsel:
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 ;
Lad os nu udføre en SELECT-forespørgsel på denne visning for at se output:
Resultatsæt:
empNum | efternavn | fornavn | deptNum | by | Land | bonus |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | 1 | New York | Forenede Stater | 3 |
1002 | Schwatz | Mike | 1 | New York | Forenede Stater | 3 |
1004 | Harera | Sandra | 1 | New York | Forenede Stater | 3 |
1014 | Murray | Keith | 1 | New York | Forenede Stater | 3 |
1003 | Langley | Margaret | to | Charlotte | Forenede Stater | 5 |
1005 | Læs | Peter | to | Charlotte | Forenede Stater | 5 |
1015 | Branson | John | to | Charlotte | Forenede Stater | 5 |
1018 | Bånd | Nolan | to | Charlotte | Forenede Stater | 5 |
1008 | Bailey | Oliver | 3 | Chicago | Forenede Stater | 8 |
1012 | Luther | Martin | 3 | Chicago | Forenede Stater | 8 |
1017 | Johnson | Eva | 3 | Chicago | Forenede Stater | 8 |
1016 | Martin | Richard | 4 | London | England | 10 |
1009 | Kop | Harry | 5 | Berlin | Tyskland | 13 |
Opret visning ved hjælp af underforespørgsel
I denne form for Opret visningserklæring forsøger vi at hente værdien af en kolonne, hvor klausulen er baseret på output fra en underforespørgsel. Sig, vi er nødt til at finde alle de ansatte, hvis løn er mere end organisationens gennemsnitlige løn.
Lad os se forespørgslen:
Forespørgsel:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Resultatsæt:
empNum | efternavn | fornavn | løn |
---|---|---|---|
1018 | Bånd | Nolan | 15000 |
1005 | Læs | Peter | 14332,5 |
1006 | Keith | Jenny | 16537.5 |
1008 | Bailey | Oliver | 24494.4 |
1009 | Kop | Harry | 30645.6 |
1014 | Murray | Keith | 25000 |
1015 | Branson | John | 15000 |
Håndtering af synspunkter
Ved at bruge visningen Alter View eller Create / Replace kan vi ændre / erstatte enhver visning. Brug af ALTER VIEW eksplicit til at kompilere en visning igen er ikke gyldig.
Hvis du har ALTER NOE tabelrettigheder, eller hvis visningen er i dit skema, kan du bruge ALTER VIEW Statement.
hvordan man bruger xor i java
Ved at bruge Alter View-forespørgslen kan vi finde rekompileringsfejlene inden kørselstid. Brug af ALTER VIEW-udsagnet kan påvirke det andet objekt / visning, der afhænger af det. Så vi kan kompilere en visning igen efter ændring.
Vi kan omdefinere en visning ved hjælp af Opret visning og kan erstatte den eksisterende visning med udskiftningsforespørgslen.
For eksempel, overvej medarbejdersyn. Her har vi efternavn og fornavn kolonnerne sammen med et par andre. Overvej, at vi har et krav om at flette kolonnen fornavn og efternavn.
Nedenfor er snapshotet af visningen, før ALTER-forespørgslen udføres.
Lad os nu udføre forespørgslen ALTER VIEW for at fusionere fornavn og efternavn.
Forespørgslen er angivet nedenfor:
Forespørgsel:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Lad os se indholdet af medarbejdernes syn nu:
Hvis du kan bemærke, har vi ikke to separate kolonner til navne. I stedet har vi bare en kolonne, der har både for- og efternavn sammenkædet.
Lær mere = >> MySQL CONCAT-funktion
Forespørgsel:
SELECT * FROM employees_view;
Resultatsæt:
empNum | empName | deptNum | løn | start dato | |
---|---|---|---|---|---|
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 | to | 8820 | 0001-01-01 |
1004 | Sandra harera | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | to | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | to | 16538 | 0001-01-01 |
1009 | Harry Bæger | 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 | to | 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 | to | 15000 | 2019-09-13 |
Slippe en visning
Vi kan slippe en visning ved hjælp af udsagnet DROP VIEW. Man kan bruge en DROP VIEW, hvis de har DROP ALLE visningsrettigheder, ellers skulle det være i deres skema. Den hængende visning påvirker ikke den underliggende tabel, som udsigten er bygget på, eller dataene i den pågældende tabel.
Forespørgsel:
DROP VIEW (view name);
Ofte stillede spørgsmål
Q # 1) Hvordan oprettes visninger i MySQL?
Svar: Der er flere måder at oprette visninger i MySQL. Vi har gennemgået fire forskellige måder som vist nedenfor.
1. MySQL Simple Opret en visning
2. MySQL Opret visning ved hjælp af GROUP BY og ORDER BY
3. MySQL Opret visning ved hjælp af JOIN
4. MySQL Opret visning ved hjælp af forespørgsel
Q # 2) Hvad er en visning i MySQL?
Svar: Visninger er som forudførte forespørgsler gemt i logisk struktur, så vi ikke behøver at udføre de komplekse forespørgsler på bordet igen. Vi kan bare spørge visningen og få vores data uden at påvirke tabellen.
Q # 3) Kan vi anvende JOIN på synspunkter, mens vi opretter synspunkter?
Svar: Ja, JOIN-udsagn kunne bruges på synspunkter på en lignende måde, som vi bruger det på bordene.
Q # 4) Kan vi oprette en visning fra en anden visning?
Svar: Visninger fungerer i det væsentlige som tabeller, men som en virtuel. Derfor kan vi på samme måde oprette visninger oven på en anden visning, hvordan vi opretter visninger oven på en tabel.
Q # 5) Hvorfor bruger vi synspunkter?
Svar: Som et resultat af SQL-forespørgslen opretter visningen en logisk tabel. Vi bruger synspunkter af følgende grunde.
- Ved at bruge view kan vi begrænse synligheden af rækker og kolonner (ved hjælp af Select og Where-klausulen) til relevante opgaver.
- Visninger bruges, når vi kombinerer rækker og kolonner (ved hjælp af Union og Deltag) fra flere tabeller.
- For at få en mere tydelig præsentation af aggregerende rækker (ved hjælp af Group by and Having) i en tabel med finere detaljer.
- Visninger bruges under omdøbning eller afkodning af enten kolonne (ved hjælp af AS) eller rækker (ved hjælp af JOIN, IF, CASE eller Oracle's DECODE).
- Ved at kæmpe et af ovenstående med sikkerhedsindstillinger kan vi kontrollere, om brugeren kun har adgang til det, de er autoriseret.
Konklusion
I denne vejledning udforskede vi de forskellige måder at skabe en visning i MySQL.
1. MySQL Simple Opret en visning
2. MySQL Opret visning ved hjælp af GROUP BY og ORDER BY
3. MySQL Opret visning ved hjælp af JOIN
4. MySQL Opret visning ved hjælp af forespørgsel
Vi kan vælge en af disse muligheder afhængigt af projektkravene.
Yderligere læsning = >> MySQL Opret TABEL
Glad læring !!
Anbefalet læsning
- MySQL ALTER TABLE - Sådan tilføjes kolonne til en tabel i MySQL
- MySQL CONCAT og GROUP_CONCAT-funktioner med eksempler
- MySQL-TÆLLING OG TÆLEDISTINKT med eksempler
- MySQL Opret database - Sådan oprettes en database i MySQL
- MySQL CREATE USER: Sådan oprettes en ny bruger i MySQL
- MySQL Opret visningsvejledning med kodeeksempler
- MySQL GROUP BY-klausul - Vejledning med eksempler
- MySQL JOIN Tutorial: Indre, ydre, kryds, venstre, højre og selv