mysql create view tutorial with code examples
Denne opplæringsveiledningen for MySQL Create View forklarer alt om å lage en visning i MySQL ved hjelp av forskjellige klausuler og eksempler. Det dekker også hvordan du slipper og administrerer visninger:
I MySQL er visning en virtuell tabell som gjør det mulig for oss å se på dataene i tabellen uten å blokkere tilgangen til tabellen fra andre programmer, og derved hjelpe oss med å unngå situasjoner med fastlåst tilstand.
Visninger opprettes på toppen av en eller flere enn en tabell som inneholder data. Vær oppmerksom på at vi bruker før du går videre MySQL versjon 8.0 .
Hva du vil lære:
MySQL Create View
Syntaks:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Syntaks Forklaring:
- Syntaksen starter med nøkkelordet “CREATE VIEW”, og informerer derved MySQL-serveren om typen aktivitet som skal utføres. Dette er et obligatorisk nøkkelord og kan ikke utelates.
- ERSTATT er en valgfri parameter. Vi kan bruke dette mens vi jobber med en eksisterende visning.
- Neste kommer navnet på utsikten. Det skal være unikt, akkurat som navnene på tabeller og kolonner.
- Velg deretter kolonnene fra tabellen. En visning kan ha alle kolonnene i den underliggende tabellen eller bare noen få utvalgte.
- Deretter kommer navnet på tabellen som visningen må utføres på. Dette er obligatorisk og kan ikke utelates.
- Deretter kommer WHERE-tilstanden, som begrenser eller filtrerer antall målrader som CREATE VIEW-handlingen må brukes på. WHERE er også et nøkkelord, men et valgfritt.
WHERE-klausulen er imidlertid viktig. Hvis ikke nevnt, eller hvis tilstanden ikke er satt riktig, vil enten hele tabellen eller ikke-nødvendige rader være en del av visningen.
MySQL Create View Eksempel
Nedenfor er en eksempeltabell opprettet i MYSQL.
Skjema navn: Stillehavet
Tabellnavn: ansatte
Kolonnenavn:
empNum : Har heltallverdier for ansattnummeret.
etternavn : Har varcharverdier for etternavn til den ansatte.
fornavn : Har varchar-verdier for den ansattes fornavn.
e-post : Har varchar-verdier for e-post-ID-en til den ansatte.
avd : Har varchar for avdelings-ID som en ansatt tilhører.
lønn : Har desimalverdier av lønn for hver ansatt.
startdato : Har datoverdier for den ansattes tilknytningsdato.
Skjema navn: Stillehavet
Tabellnavn: avdelinger
Kolonnenavn:
deptNum; Har varchar for avdelings-ID i en organisasjon.
by: Har navnet på byen der avdelingene jobber.
land: Har navnet på landet som tilsvarer byen.
bonus Har den prosentvise verdien av bonusen.
MySQL Simple Lag en visning
La oss nå lage et syn på toppen av tabellen ovenfor.
Nedenfor er spørringen.
SELECT-setningen kan være med spesifikke kolonnenavn, eller vi kan bruke “*” for å få alle kolonnene. Når vi oppretter en visning, kan vi ikke legge til eller slette kolonnene. Hvis vi vil legge til eller slette kolonner, må vi enten opprette en ny visning eller erstatte denne eksisterende visningen.
Utdatauttalelsen viser at CREATE VIEW SQL-setningene ble utført. Det står også at ingen rekker har blitt berørt. Dette innebærer at når en ny rad opprettes, påvirker den ikke dataene i den underliggende tabellen.
La oss spørre om utsikten.
Spørsmål:
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 ;
ResultatSett:
empNum | etternavn | fornavn | e-post | avd | lønn | startdato |
---|---|---|---|---|---|---|
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 | lese | Peter | pl@gmail.com | to | 14332,5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | to | 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 | 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 | Knytte bånd | Nolan | nb@gmail.com | to | 15000 | 2019-09-13 |
Lag visning ved hjelp av GROUP BY og ORDER BY
La oss anta et scenario der vi trenger å få den totale lønnsmengden, avdelingsmessig.
Nedenfor er spørringen:
I stedet for å kjøre dette spørsmålet hver gang, trenger vi informasjonen. Det er bedre å spørre om visningen, da dette vil forbruke færre databasekilder.
La oss nå se innholdet i vårt syn. Vi vil finne ut hvor mye hver avdeling sender til sine ansatte når det gjelder lønn.
Spørsmål:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Resultatsett:
avd | sum (lønn) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | to | Charlotte | forente stater | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
3 | 42994.4 | |||||
to | 69690 | |||||
1 | 44096.2 | |||||
NULL | 10100 |
NULL i deptNum indikerer at en ansatt ikke er en del av noen avdeling, men er på lønnslister for organisasjonen.
MySQL Create View ved hjelp av JOIN
La oss anta at vi ønsker å få data om avdelingen, byen den er basert på, og bonusen som tilbys sine ansatte. Vi trenger denne informasjonen for alle ansatte.
For å oppnå dette vil vi bruke JOIN-nøkkelordet for å få data fra avdelinger og ansatte.
La oss ta en titt på spørringen og utdataene.
Vi kan bruke forskjellige typer JOIN her, som INNER JOIN, VENSTRE YTRE JOIN, RIGHT YTRE JOIN eller FULL YTRE JOIN avhengig av vårt krav.
Spørsmål:
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 ;
La oss nå utføre et SELECT-spørsmål på denne visningen for å se utdataene:
Resultatsett:
empNum | etternavn | fornavn | avd | by | land | bonus |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | 1 | New York | forente stater | 3 |
1002 | Schwatz | Mike | 1 | New York | forente stater | 3 |
1004 | Harera | Sandra | 1 | New York | forente stater | 3 |
1014 | Murray | Keith | 1 | New York | forente stater | 3 |
1003 | Langley | Margaret | to | Charlotte | forente stater | 5 |
1005 | lese | Peter | to | Charlotte | forente stater | 5 |
1015 | Branson | John | to | Charlotte | forente stater | 5 |
1018 | Knytte bånd | Nolan | to | Charlotte | forente stater | 5 |
1008 | Bailey | Oliver | 3 | Chicago | forente stater | 8 |
1012 | Luther | Martin | 3 | Chicago | forente stater | 8 |
1017 | Johnson | Eva | 3 | Chicago | forente stater | 8 |
1016 | Martin | Richard | 4 | London | England | 10 |
1009 | Kopp | Harry | 5 | Berlin | Tyskland | 1. 3 |
Lag visning ved hjelp av underspørring
I denne typen statement-setning prøver vi å hente verdien til en kolonne der leddet er basert på utdataene fra et underspørring. Si at vi må finne alle de ansatte hvis lønn er mer enn organisasjonens gjennomsnittslønn.
La oss se spørringen:
Spørsmål:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Resultatsett:
empNum | etternavn | fornavn | lønn |
---|---|---|---|
1018 | Knytte bånd | Nolan | 15000 |
1005 | lese | 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 |
Administrere visninger
Ved å bruke visningen Alter View eller Create / Replace kan vi endre / erstatte alle visninger. Å bruke ALTER VIEW eksplisitt til å kompilere en visning på nytt er ikke gyldig.
Hvis du har ALTER NOE Table-systemrettigheter, eller hvis visningen er i skjemaet ditt, kan du bruke ALTER VIEW Statement.
beste gratis programvare for sikkerhetskopiering av bilder 2017
Ved å bruke Alter View-spørringen kan vi finne rekompileringsfeilene før kjøretiden. Bruk av ALTER VIEW-setningen kan påvirke det andre objektet / visningen som er avhengig av det. Så vi kan kompilere en visning på nytt etter endring.
Vi kan omdefinere en visning ved hjelp av Create View og kan erstatte den eksisterende visningen med Erstatt visningsspørring.
For eksempel, vurdere ansattesyn. Her har vi etternavn og fornavn-kolonnene sammen med noen få andre. Vurder at vi har et krav om å slå sammen kolonnene fornavn og etternavn.
Nedenfor er øyeblikksbildet av visningen før du utfører ALTER-spørringen.
La oss nå utføre ALTER VIEW-spørringen for å slå sammen fornavn og etternavn.
Spørringen er gitt nedenfor:
Spørsmål:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
La oss se innholdet i ansattesynet nå:
Hvis du merker, har vi ikke to separate kolonner for navn. I stedet har vi bare en kolonne som har både fornavn og etternavn sammenkoblet.
Lær mer = >> MySQL CONCAT-funksjon
Spørsmål:
SELECT * FROM employees_view;
Resultatsett:
empNum | empName | e-post | avd | lønn | startdato |
---|---|---|---|---|---|
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 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 | 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 |
Dropper et syn
Vi kan slippe en visning ved hjelp av DROP VIEW-setningen. Man kan bruke DROP VIEW hvis de har DROP NOE visningsrettigheter, ellers bør det være i skjemaet deres. Den hengende visningen påvirker ikke den underliggende tabellen som visningen er bygget på eller dataene i den tabellen.
Spørsmål:
DROP VIEW (view name);
Vanlige spørsmål
Q # 1) Hvordan lage visninger i MySQL?
Svar: Det er flere måter å lage visninger i MySQL. Vi har gått gjennom fire forskjellige måter som vist nedenfor.
1. MySQL Simple Lag en visning
2. MySQL Create View ved hjelp av GROUP BY og ORDER BY
3. MySQL Lag visning ved hjelp av JOIN
4. MySQL Opprett visning ved hjelp av underspørring
Q # 2) Hva er en visning i MySQL?
Svar: Visninger er som forhåndsutførte spørringer lagret i logisk struktur, slik at vi ikke trenger å utføre de komplekse spørringene på bordet på nytt. Vi kan bare spørre om visningen og få dataene våre uten å påvirke tabellen.
Q # 3) Kan vi bruke JOIN på visninger mens vi lager visninger?
Svar: Ja, JOIN-utsagn kan brukes på visninger, på en lignende måte som vi bruker det på bordene.
Q # 4) Kan vi lage et syn fra et annet syn?
Svar: Visninger fungerer i hovedsak som tabeller, men som en virtuell. Derfor, slik vi lager visninger på toppen av et bord, kan vi på samme måte lage visninger på toppen av en annen visning.
Q # 5) Hvorfor bruker vi visninger?
Svar: Som et resultat av SQL-spørringen oppretter visningen en logisk tabell. Vi bruker visninger av følgende grunner.
- Ved å bruke view kan vi begrense synligheten til rader og kolonner (ved hjelp av Select and Where-setningen) for relevante oppgaver.
- Visninger brukes når vi kombinerer rader og kolonner (ved hjelp av Union og Bli med) fra flere bord.
- For å få en mer tydelig presentasjon av aggregerende rader (ved hjelp av Group by and Having) i en tabell med finere detaljer.
- Visninger brukes mens du omdøper eller dekoder enten kolonne (ved hjelp av AS) eller rader (ved hjelp av JOIN, IF, CASE eller Oracle's DECODE).
- Ved å kombinere noe av det ovennevnte med sikkerhetsinnstillinger, kan vi sjekke om brukeren kun har tilgang til det de har autorisasjon for.
Konklusjon
I denne veiledningen utforsket vi de forskjellige måtene å lage en visning i MySQL.
1. MySQL Simple Lag en visning
2. MySQL Create View ved hjelp av GROUP BY og ORDER BY
3. MySQL Lag visning ved hjelp av JOIN
4. MySQL Opprett visning ved hjelp av underspørring
Vi kan velge et av disse alternativene, avhengig av prosjektkravene.
Videre lesing = >> MySQL CREATE TABLE
Happy Learning !!
Anbefalt lesing
- MySQL ALTER TABLE - Slik legger du til kolonne i en tabell i MySQL
- MySQL CONCAT og GROUP_CONCAT funksjoner med eksempler
- MySQL-TELLING OG ANTALL DISTINKT Med eksempler
- MySQL Create Database - Hvordan lage en database i MySQL
- MySQL CREATE USER: Hvordan lage nye brukere i MySQL
- MySQL Lag visningsveiledning med kodeeksempler
- MySQL GROUP BY Clause - Veiledning med eksempler
- MySQL JOIN Opplæring: indre, ytre, kryss, venstre, høyre og selv