mysql create view tutorial with code examples
Acest tutorial MySQL Create View explică totul despre crearea unei vizualizări în MySQL folosind diferite clauze și exemple. De asemenea, acoperă modul de eliminare și gestionare a vizualizărilor:
În MySQL, vizualizarea este un tabel virtual care ne permite să aruncăm o privire asupra datelor din tabel fără a bloca accesul la masă al altor programe și astfel ne ajută să evităm situațiile de blocaj.
Vizualizările sunt create deasupra unuia sau mai multor tabele care conțin date. Înainte de a continua, vă rugăm să rețineți că îl folosim MySQL versiunea 8.0 .
Ce veți învăța:
MySQL Create View
Sintaxă:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Sintaxă Explicație:
- Sintaxa începe cu cuvântul cheie „CREATE VIEW”, informând astfel serverul MySQL despre tipul de activitate care trebuie efectuată. Acesta este un cuvânt cheie obligatoriu și nu poate fi omis.
- REPLACE este un parametru opțional. Putem folosi acest lucru în timp ce lucrăm la o vizualizare existentă.
- Urmează numele vederii. Ar trebui să fie unic la fel ca numele tabelelor și coloanelor.
- Apoi, selectați coloanele din tabel. O vizualizare poate avea toate coloanele tabelului de bază sau doar câteva selectate.
- Urmează numele tabelului pe care trebuie realizată vizualizarea. Acest lucru este obligatoriu și nu poate fi omis.
- Apoi vine condiția WHERE, care restricționează sau filtrează numărul de rânduri țintă pe care trebuie aplicată acțiunea CREATE VIEW. WHERE este și un cuvânt cheie, dar unul opțional.
Clauza WHERE este totuși semnificativă. Dacă nu este menționat sau dacă condiția nu este setată corect, atunci întregul tabel sau rândurile neobligatorii vor face parte din vizualizare.
Exemplu MySQL Create View
Mai jos este prezentat un exemplu de tabel creat în MYSQL.
Nume schemă: Pacific
Nume tabel: angajați
Numele coloanelor:
empNum : Deține valori întregi pentru numărul de angajat.
numele de familie : Deține valori varchar pentru numele de familie al angajatului.
Nume : Deține valori varchar pentru prenumele angajatului.
e-mail : Deține valori varchar pentru ID-ul de e-mail al angajatului.
deptNum : Deține varchar pentru ID-ul departamentului de care aparține un angajat.
salariu : Deține valori zecimale ale salariului pentru fiecare angajat.
data de început : Deține valorile datei pentru data aderării angajatului.
Nume schemă: Pacific
Nume tabel: departamente
Numele coloanelor:
deptNum; Deține varchar pentru ID-ul departamentului în cadrul unei organizații.
oraș: Deține numele orașului din care lucrează departamentele.
țară: Deține numele țării corespunzătoare orașului.
primă Deține valoarea procentuală a bonusului.
MySQL Simple Creați o vizualizare
Acum să creăm o vizualizare în partea de sus a tabelului de mai sus.
Dat mai jos este interogarea.
Clauza SELECT poate fi cu nume de coloane specifice sau putem folosi „*”, pentru a obține toate coloanele. Odată ce am creat o vizualizare, nu putem adăuga sau șterge coloanele. Dacă dorim să adăugăm sau să ștergem coloane, atunci va trebui fie să creăm o vizualizare nouă, fie să înlocuim această vizualizare existentă.
Instrucțiunea de ieșire arată că instrucțiunile SQL CREATE VIEW au fost executate cu succes. De asemenea, se spune că nu au fost afectate rânduri. Acest lucru implică faptul că, atunci când este creat un rând nou, acesta nu afectează datele din tabelul de bază.
Acum, să interogăm vizualizarea.
Interogare:
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 ;
Setul de rezultate:
empNum | numele de familie | Nume | deptNum | salariu | data de început | |
---|---|---|---|---|---|---|
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 | Două | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | citit | Petru | pl@gmail.com | Două | 14332,5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | Două | 16537,5 | 0001-01-01 |
1009 | ceașcă | 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 | Ioan | jb@gmail.com | Două | 15000 | 0001-01-01 |
1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | ajun | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Legătură | Nolan | nb@gmail.com | Două | 15000 | 2019-09-13 |
Creați vizualizare utilizând GROUP BY și ORDER BY
Să presupunem un scenariu în care trebuie să obținem suma totală a salariului, în funcție de departament.
Mai jos este interogarea:
În loc să rulăm de fiecare dată această interogare în tabel, avem nevoie de informații, este mai bine să interogăm vizualizarea, deoarece aceasta va consuma mai puține surse de baze de date.
Acum, să vedem conținutul vizualizării noastre. Vom afla cât de mult trimite fiecare departament angajaților săi în ceea ce privește salariile.
Interogare:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Setul de rezultate:
deptNum | suma (salariu) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | Două | Charlotte | Statele Unite | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
3 | 42994.4 | |||||
Două | 69690 | |||||
1 | 44096.2 | |||||
NUL | 10100 |
NULL din deptNum indică faptul că un angajat nu face parte din niciun departament, ci se află pe listele de plată ale organizației.
MySQL Create View folosind JOIN
Să presupunem că vrem să obținem date despre departament, orașul din care se află și bonusul oferit angajaților săi. Avem nevoie de aceste informații pentru fiecare angajat.
Pentru a realiza acest lucru, vom folosi cuvântul cheie JOIN pentru a obține date de la departamente și tabelul angajaților.
Să aruncăm o privire asupra interogării și a rezultatului acesteia.
Aici putem folosi diferite tipuri de ÎNREGISTRARE, cum ar fi, ÎNTRĂ ÎNTRARE, ÎNREGISTRARE ÎN EXTERIE, ÎNREGISTRARE EXTERNĂ DREPTĂ sau ÎNREGISTRARE EXTERNĂ completă, în funcție de cerințele noastre.
Interogare:
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 ;
Să executăm acum o interogare SELECT în această vizualizare pentru a vedea rezultatul:
Setul de rezultate:
empNum | numele de familie | Nume | deptNum | oraș | țară | primă |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | 1 | New York | Statele Unite | 3 |
1002 | Schwatz | Mike | 1 | New York | Statele Unite | 3 |
1004 | Harera | Sandra | 1 | New York | Statele Unite | 3 |
1014 | Murray | Keith | 1 | New York | Statele Unite | 3 |
1003 | Langley | Margaret | Două | Charlotte | Statele Unite | 5 |
1005 | citit | Petru | Două | Charlotte | Statele Unite | 5 |
1015 | Branson | Ioan | Două | Charlotte | Statele Unite | 5 |
1018 | Legătură | Nolan | Două | Charlotte | Statele Unite | 5 |
1008 | Bailey | Oliver | 3 | Chicago | Statele Unite | 8 |
1012 | Luther | Martin | 3 | Chicago | Statele Unite | 8 |
1017 | Johnson | ajun | 3 | Chicago | Statele Unite | 8 |
1016 | Martin | Richard | 4 | Londra | Anglia | 10 |
1009 | ceașcă | Harry | 5 | Berlin | Germania | 13 |
Creați vizualizare utilizând subinterogare
În acest tip de declarație create view, încercăm să preluăm valoarea unei coloane în care clauza se bazează pe ieșirea unei subinterogări. Spuneți că trebuie să găsim toți acei angajați al căror salariu este mai mare decât salariul mediu al organizației.
Să vedem interogarea:
Interogare:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Setul de rezultate:
empNum | numele de familie | Nume | salariu |
---|---|---|---|
1018 | Legătură | Nolan | 15000 |
1005 | citit | Petru | 14332,5 |
1006 | Keith | Jenny | 16537,5 |
1008 | Bailey | Oliver | 24494.4 |
1009 | ceașcă | Harry | 30645.6 |
1014 | Murray | Keith | 25000 |
1015 | Branson | Ioan | 15000 |
Gestionarea vizualizărilor
Folosind Alter View sau Create / Inlocuiți vizualizarea putem modifica / înlocui orice vizualizare. Utilizarea ALTER VIEW în mod explicit pentru recompilarea unei vizualizări nu este validă.
Dacă aveți privilegii de sistem ALTER ORY Table sau dacă vizualizarea este în schema dvs., puteți utiliza Instrucțiunea ALTER VIEW.
clasificarea erorilor în testarea software-ului
Folosind interogarea Alter View, putem localiza erorile de recompilare înainte de timpul de execuție. Utilizarea instrucțiunii ALTER VIEW poate afecta celălalt obiect / vizualizare care depinde de aceasta. Deci, putem recompila o vizualizare după modificare.
Putem redefini o vizualizare utilizând Creare vizualizare și putem înlocui vizualizarea existentă prin interogarea Replace view.
De exemplu, ia în considerare angajați_vizualizare. Aici avem coloanele prenumele și prenumele împreună cu alte câteva. Luați în considerare că avem cerința de a îmbina coloanele prenume și prenume.
Dat mai jos este instantaneul vizualizării înainte de a executa interogarea ALTER.
Acum să executăm interogarea ALTER VIEW pentru a îmbina prenumele și prenumele.
Interogarea este dată mai jos:
Interogare:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Să vedem acum conținutul angajaților_vizualizați:
Dacă puteți observa, nu avem două coloane separate pentru nume. În schimb, avem doar o coloană care are atât numele, cât și prenumele concatenate.
Aflați mai multe = >> Funcția MySQL CONCAT
Interogare:
SELECT * FROM employees_view;
Setul de rezultate:
empNum | empName | deptNum | salariu | data de început | |
---|---|---|---|---|---|
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 | Două | 8820 | 0001-01-01 |
1004 | Sandra harera | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | Două | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | Două | 16538 | 0001-01-01 |
1009 | Harry Pahar | 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 | Două | 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 | Două | 15000 | 2019-09-13 |
Eliminarea unei vizualizări
Putem renunța la o vizualizare folosind instrucțiunea DROP VIEW. Se poate utiliza o VIZUALIZARE DROP dacă au privilegiul DROP ORY view sau altfel ar trebui să fie în schema lor. Vizualizarea înclinată nu are impact asupra tabelului de bază pe care a fost construită vizualizarea sau asupra datelor din tabelul respectiv.
Interogare:
DROP VIEW (view name);
Întrebări frecvente
Q # 1) Cum se creează vizualizări în MySQL?
Răspuns: Există mai multe moduri de a crea vizualizări în MySQL. Am parcurs patru moduri diferite, așa cum se arată mai jos.
1. MySQL Simple Create A View
2. MySQL Create View folosind GROUP BY și ORDER BY
3. MySQL Create View folosind JOIN
4. MySQL Create View folosind Subinterogare
Q # 2) Ce este o vizualizare în MySQL?
Răspuns: Vizualizările sunt ca niște interogări pre-executate stocate în structură logică, astfel încât nu trebuie să executăm din nou interogările complexe de pe masă. Putem doar să interogăm vizualizarea și să obținem datele noastre fără a afecta tabelul.
Q # 3) Putem aplica ÎNREGISTRARE pe vizualizări în timp ce creăm vizualizări?
Răspuns: Da, declarațiile JOIN ar putea fi folosite în vizualizări, într-un mod similar în care îl folosim pe tabele.
Q # 4) Putem crea o vizualizare dintr-o altă vizualizare?
Răspuns: Vizualizările acționează în esență ca tabele, dar ca una virtuală. Prin urmare, modul în care creăm vederi deasupra unui tabel, putem crea în mod similar vederi deasupra unei alte vizualizări.
Q # 5) De ce folosim vizualizări?
Răspuns: Ca urmare a interogării SQL, vizualizarea creează un tabel logic. Folosim vizualizări din următoarele motive.
- Prin utilizarea vizualizării, putem limita vizibilitatea rândurilor și coloanelor (folosind clauza Select și Where) pentru sarcinile relevante.
- Vizualizările sunt folosite atunci când combinăm rânduri și coloane (folosind Uniune și Alăturați-vă) din mai multe tabele.
- Pentru a obține o prezentare mai distinctă a agregării rândurilor (folosind Grupare după și După) într-un tabel cu detalii mai fine.
- Vizualizările sunt folosite în timpul redenumirii sau decodificării coloanei (folosind AS) sau rândurilor (folosind JOIN, IF, CASE sau DECODUL Oracle).
- Combinând oricare dintre cele de mai sus cu setări de securitate, putem verifica dacă utilizatorul are acces doar la ceea ce este autorizat.
Concluzie
În acest tutorial, am explorat diferitele moduri de a crea o vizualizare în MySQL.
1. MySQL Simple Create A View
2. MySQL Create View folosind GROUP BY și ORDER BY
3. MySQL Create View folosind JOIN
4. MySQL Create View folosind Subinterogare
Putem alege una dintre aceste opțiuni în funcție de cerințele proiectului.
Lecturi suplimentare = >> MySQL CREATE TABLE
Învățare fericită !!
Lectură recomandată
- MySQL ALTER TABLE - Cum să adăugați o coloană la un tabel în MySQL
- Funcțiile MySQL CONCAT și GROUP_CONCAT cu exemple
- MySQL COUNT ȘI COUNT DISTINCT Cu exemple
- MySQL Create Database - Cum să creați o bază de date în MySQL
- MySQL CREATE USER: Cum să creați un utilizator nou în MySQL
- Tutorial MySQL Create View cu exemple de cod
- MySQL GROUP BY Clause - Tutorial cu exemple
- MySQL JOIN Tutorial: interior, exterior, încrucișat, stânga, dreapta și sine