mysql create view tutorial with code examples
Ta vadnica MySQL Create View razlaga vse o ustvarjanju pogleda v MySQL z uporabo različnih klavzul in primerov. Vključuje tudi spuščanje in upravljanje pogledov:
V MySQL je pogled navidezna tabela, ki nam omogoča vpogled v podatke v tabeli, ne da bi blokiral dostop do tabele drugim programom in nam s tem pomagal, da se izognemo zastojem.
Pogledi se ustvarijo na vrhu ene ali več tabel, ki vsebujejo podatke. Preden nadaljujete, upoštevajte, da uporabljamo Različica MySQL 8.0 .
Kaj se boste naučili:
MySQL Ustvari pogled
Sintaksa:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Pojasnilo sintakse:
- Sintaksa se začne s ključno besedo »USTVARI POGLED«, s čimer strežnik MySQL obvešča o vrsti dejavnosti, ki jo je treba izvesti. To je obvezna ključna beseda in je ni mogoče izpustiti.
- REPLACE je neobvezen parameter. To lahko uporabimo, medtem ko delamo na obstoječem pogledu.
- Nato sledi ime pogleda. Unikat bi moral biti tako kot imena tabel in stolpcev.
- Nato v tabeli izberite stolpce. Pogled ima lahko vse stolpce spodnje tabele ali le nekaj izbranih.
- Nato sledi ime tabele, v kateri je treba izvesti pogled. To je obvezno in ga ni mogoče izpustiti.
- Nato pride pogoj WHERE, ki omeji ali filtrira število ciljnih vrstic, v katerih je treba uporabiti dejanje CREATE VIEW. WHERE je tudi ključna beseda, vendar neobvezna.
Klavzula WHERE pa je pomembna. Če ni omenjeno ali če pogoj ni pravilno nastavljen, bo del pogleda del celo tabela ali nezaželene vrstice.
razlika med c ++ in javo
Primer ustvarjanja pogleda MySQL
Spodaj je predstavljena vzorčna tabela, ustvarjena v MYSQL.
Ime sheme: pacifiški
Ime tabele: zaposlenih
Imena stolpcev:
empNum : Vsebuje celoštevilčne vrednosti za število zaposlenih.
priimek : Vsebuje vrednosti varchar za priimek zaposlenega.
ime : Vsebuje vrednosti varchar za ime zaposlenega.
E-naslov : Vsebuje vrednosti varchar za e-poštni ID zaposlenega.
deptNum : Vsebuje varchar za ID oddelka, ki mu pripada zaposleni.
plača : Vsebuje decimalne vrednosti plače za vsakega zaposlenega.
začetni datum : Vsebuje datumske vrednosti za datum pridružitve zaposlenega.
Ime sheme: pacifiški
Ime tabele: oddelki
Imena stolpcev:
deptNum; Vsebuje varchar za ID oddelka znotraj organizacije.
mesto: Vsebuje ime mesta, iz katerega delajo oddelki.
država: Vsebuje ime države, ki ustreza mestu.
bonus Vsebuje odstotno vrednost bonusa.
MySQL Simple Ustvari pogled
Zdaj pa ustvarimo pogled na vrhu zgornje tabele.
Spodaj je poizvedba.
Stavek SELECT je lahko z določenimi imeni stolpcev ali pa lahko uporabimo '*', da dobimo vse stolpce. Ko enkrat ustvarimo pogled, stolpcev ne moremo dodajati ali brisati. Če želimo dodati ali izbrisati stolpce, bomo morali ustvariti nov pogled ali zamenjati obstoječi pogled.
Izhodni stavek kaže, da so bili stavki SQL CREATE VIEW uspešno izvedeni. Prav tako piše, da to ni vplivalo na nobeno vrstico. To pomeni, da pri ustvarjanju nove vrstice to ne vpliva na podatke v spodnji tabeli.
Zdaj poizvedimo pogled.
Poizvedba:
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 ;
Rezultat:
empNum | priimek | ime | E-naslov | deptNum | plača | začetni 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 | Mike | ms@gmail.com | 1. | 5304,5 | 0001-01-01 |
1003 | Langley | Margaret | margaret.langley@gmail.com | dva | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | 1. | 10609 | 0001-01-01 |
1005 | preberite | Peter | pl@gmail.com | dva | 14332,5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | dva | 16537,5 | 0001-01-01 |
1009 | Pokal | Harry | hb@gmail.com | 5. | 30645,6 | 0001-01-01 |
1011 | Hanks | Tom | th@gmail.com | NIČ | 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 | Janez | jb@gmail.com | dva | 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 | Obveznica | Nolan | nb@gmail.com | dva | 15000 | 2019-09-13 |
Ustvari pogled z uporabo GROUP BY in ORDER BY
Predpostavimo scenarij, ko moramo po oddelkih dobiti skupni znesek plače.
Spodaj je poizvedba:
Namesto da vsako poizvedbo v tabeli zaženemo vsakič, potrebujemo informacije, raje poizvedite po pogledu, saj bo to porabilo manj virov baze podatkov.
Zdaj pa poglejmo vsebino našega pogleda. Ugotovili bomo, koliko posamezen oddelek glede na plače pošilja svojim zaposlenim.
Poizvedba:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Nastavitev rezultatov:
deptNum | vsota (plača) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | dva | Charlotte | Združene države | 5. |
5. | 30645,6 | |||||
4. | 5000 | |||||
3. | 42994.4 | |||||
dva | 69690 | |||||
1. | 44096,2 | |||||
NIČ | 10100 |
NULL v deptNum pomeni, da zaposleni ni del nobenega oddelka, ampak je na plačilnih seznamih organizacije.
MySQL Create View z uporabo JOIN
Predpostavimo, da želimo dobiti podatke o oddelku, mestu, iz katerega ima sedež, in bonusu, ki se ponuja njegovim zaposlenim. Te podatke potrebujemo za vsakega zaposlenega.
Da bi to dosegli, bomo s ključno besedo JOIN dobili podatke iz tabele oddelkov in zaposlenih.
Oglejmo si poizvedbo in njen rezultat.
Tu lahko uporabimo različne vrste PRIDRUŽITEV, na primer NOTRANJE PRIDRUŽITEV, LEVO ZUNANJE PRIDRUŽITEV, DESNO ZUNANJE PRIDRUŽITEV ali POPOLNO ZUNANJE PRIDRUŽITEV, odvisno od naše zahteve.
Poizvedba:
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 ;
Izvedimo zdaj poizvedbo SELECT v tem pogledu, da si ogledamo izhodne podatke:
Nastavitev rezultatov:
empNum | priimek | ime | deptNum | mesto | država | bonus |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | 1. | New York | Združene države | 3. |
1002 | Schwatz | Mike | 1. | New York | Združene države | 3. |
1004 | Harera | Sandra | 1. | New York | Združene države | 3. |
1014 | Murray | Keith | 1. | New York | Združene države | 3. |
1003 | Langley | Margaret | dva | Charlotte | Združene države | 5. |
1005 | preberite | Peter | dva | Charlotte | Združene države | 5. |
1015 | Branson | Janez | dva | Charlotte | Združene države | 5. |
1018 | Obveznica | Nolan | dva | Charlotte | Združene države | 5. |
1008 | Bailey | Oliver | 3. | Chicago | Združene države | 8. |
1012 | Luther | Martin | 3. | Chicago | Združene države | 8. |
1017 | Johnson | Eve | 3. | Chicago | Združene države | 8. |
1016 | Martin | Richard | 4. | London | Anglija | 10. |
1009 | Pokal | Harry | 5. | Berlin | Nemčija | 13. |
Ustvari pogled z uporabo podpoizvedbe
Pri tovrstni izjavi create view poskušamo pridobiti vrednost stolpca, kjer stavek temelji na rezultatu podpoizvedbe. Recimo, najti moramo vse tiste zaposlene, katerih plača je večja od povprečne plače organizacije.
Poglejmo poizvedbo:
Poizvedba:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Nastavitev rezultatov:
empNum | priimek | ime | plača |
---|---|---|---|
1018 | Obveznica | Nolan | 15000 |
1005 | preberite | Peter | 14332,5 |
1006 | Keith | Jenny | 16537,5 |
1008 | Bailey | Oliver | 24494.4 |
1009 | Pokal | Harry | 30645,6 |
1014 | Murray | Keith | 25000 |
1015 | Branson | Janez | 15000 |
Upravljanje pogledov
Z uporabo pogleda Alter View ali Create / Replace lahko spremenimo / zamenjamo kateri koli pogled. Če izrecno uporabite ALTER VIEW za ponovno sestavljanje pogleda, ni veljavno.
Če imate sistemske privilegije ALTER ANY AS ali če je pogled v vaši shemi, lahko uporabite izjavo ALTER VIEW.
Z uporabo poizvedbe Alter View lahko poiščemo napake pri prevajanju pred časom izvajanja. Uporaba stavka ALTER VIEW lahko vpliva na drugi predmet / pogled, ki je odvisen od njega. Torej lahko pogled spremenimo po novem.
Pogled lahko znova določimo z uporabo možnosti Ustvari pogled, obstoječi pogled pa lahko nadomestimo s poizvedbo Zamenjaj pogled.
razlika med nadzorom kakovosti in zagotavljanjem kakovosti
Na primer razmislite o zaposlenih_pogled Tu imamo stolpca lastName in firstName skupaj z nekaj drugimi. Upoštevajte, da imamo zahtevo po združitvi stolpcev firstName in lastName.
Spodaj je posnetek pogleda pred izvajanjem poizvedbe ALTER.
Zdaj pa izvedimo poizvedbo ALTER VIEW, da združimo firstName in lastName.
Poizvedba je podana spodaj:
Poizvedba:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Oglejmo si zdaj vsebino staff_view:
Če opazite, nimamo dveh ločenih stolpcev za imena. Namesto tega imamo samo en stolpec, ki ima združena ime in priimek.
Več o tem = >> Funkcija MySQL CONCAT
Poizvedba:
SELECT * FROM employees_view;
Nastavitev rezultatov:
empNum | empName | E-naslov | deptNum | plača | začetni 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 | dva | 8820 | 0001-01-01 |
1004 | Sandra harera | sh@gmail.com | 1. | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | dva | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | dva | 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 | dva | 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 | dva | 15000 | 2019-09-13 |
Spuščanje pogleda
Pogled lahko spustimo z uporabo stavka DROP VIEW. Uporabnik lahko uporabi DROP VIEW, če ima DROP ANY privilegij pogleda ali pa bi moral biti v njihovi shemi. Povešeni pogled ne vpliva na osnovno tabelo, na kateri je bil zgrajen pogled, ali na podatke v tej tabeli.
Poizvedba:
DROP VIEW (view name);
Pogosta vprašanja
V # 1) Kako ustvariti poglede v MySQL?
Odgovor: Obstaja več načinov za ustvarjanje pogledov v MySQL. Kot smo prikazali spodaj, smo šli na štiri različne načine.
1. MySQL Simple Ustvari pogled
2. MySQL Create View z uporabo GROUP BY in ORDER BY
3. MySQL Create View z uporabo JOIN
4. MySQL Create View z uporabo podpoizvedbe
Q # 2) Kaj je pogled v MySQL?
Odgovor: Pogledi so kot vnaprej izvedene poizvedbe, shranjene v logični strukturi, tako da nam ni treba znova izvajati zapletenih poizvedb v tabeli. Lahko samo povprašamo po pogledu in dobimo svoje podatke, ne da bi to vplivalo na tabelo.
Q # 3) Ali lahko uporabimo JOIN za poglede med ustvarjanjem pogledov?
Odgovor: Da, stavke JOIN bi lahko uporabili v pogledih, na podoben način, kot ga uporabljamo v tabelah.
Q # 4) Ali lahko pogled ustvarimo iz drugega pogleda?
Odgovor: Pogledi v bistvu delujejo kot tabele, vendar navidezno. Tako lahko način ustvarjanja pogledov na vrhu tabele podobno ustvarimo poglede na vrhu drugega pogleda.
V # 5) Zakaj uporabljamo poglede?
kako odpreti datoteko a.swf
Odgovor: Kot rezultat poizvedbe SQL pogled ustvari logično tabelo. Poglede uporabljamo iz naslednjih razlogov.
- Z uporabo pogleda lahko omejimo vidnost vrstic in stolpcev (z uporabo klavzule Izberi in Kje) za ustrezne naloge.
- Pogledi se uporabljajo, kadar kombiniramo vrstice in stolpce (z uporabo Unije in Pridružite se) iz več tabel.
- Za bolj jasno predstavitev združevanja vrstic (z uporabo razvrsti po in ob) v tabelo s podrobnejšimi podrobnostmi.
- Pogledi se uporabljajo pri preimenovanju ali dekodiranju stolpcev (z uporabo AS) ali vrstic (z uporabo JOIN, IF, CASE ali Oracle's DECODE).
- S kombiniranjem katerega koli od zgornjih z varnostnimi nastavitvami lahko preverimo, ali ima uporabnik dostop samo do tega, za kar je pooblaščen.
Zaključek
V tej vadnici smo raziskali različne načine ustvarjanja pogleda v MySQL.
1. MySQL Simple Ustvari pogled
2. MySQL Create View z uporabo GROUP BY in ORDER BY
3. MySQL Create View z uporabo JOIN
4. MySQL Create View z uporabo podpoizvedbe
Izberemo lahko katero koli od teh možnosti, odvisno od projektnih zahtev.
Nadaljnje branje = >> Ustvari mizo MySQL
Srečno učenje !!
Priporočeno branje
- MySQL ALTER TABLE - Kako dodati stolpec v tabelo v MySQL
- Funkcije MySQL CONCAT in GROUP_CONCAT s primeri
- MySQL šteje in šteje ločeno s primeri
- MySQL Create Database - Kako ustvariti bazo podatkov v MySQL
- Ustvari uporabnika MySQL: Kako ustvariti novega uporabnika v MySQL
- Vadnica za ustvarjanje pogleda MySQL s primeri kode
- Klavzula MySQL GROUP BY - Vadnica s primeri
- Vadnica za MySQL JOIN: Notranja, zunanja, križna, leva, desna in lastna