mysql create view tutorial with code examples
Aquest tutorial MySQL Create View explica tot sobre la creació d'una vista a MySQL mitjançant diferents clàusules i exemples. També inclou la manera de deixar i gestionar les visualitzacions:
A MySQL, view és una taula virtual que ens permet veure les dades de la taula sense impedir que altres programes accedeixin a la taula i, per tant, ens ajudin a evitar situacions de bloqueig.
Les visualitzacions es creen a sobre d'una o més d'una taula que conté dades. Abans de continuar endavant, tingueu en compte que estem utilitzant MySQL versió 8.0 .
Què aprendreu:
Vista de creació de MySQL
Sintaxi:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Sintaxi Explicació:
- La sintaxi comença amb la paraula clau 'CREA VISUALITZACIÓ', informant així al servidor MySQL sobre el tipus d'activitat que s'ha de realitzar. Aquesta és una paraula clau obligatòria i no es pot ometre.
- REPLACE és un paràmetre opcional. Podem utilitzar-ho mentre treballem en una vista existent.
- A continuació ve el nom de la vista. Ha de ser únic com els noms de taules i columnes.
- A continuació, seleccioneu les columnes de la taula. Una vista pot tenir totes les columnes de la taula subjacent o només algunes seleccionades.
- A continuació ve el nom de la taula on s'ha de realitzar la vista. Això és obligatori i no es pot ometre.
- Després ve la condició WHERE, que restringeix o filtra el nombre de files de destinació a les quals s'ha d'aplicar l'acció CREAR VISUALITZACIÓ. WHERE també és una paraula clau, però opcional.
La clàusula WHERE és, però, significativa. Si no s'esmenta, o si la condició no s'estableix correctament, tota la taula o les files no obligatòries formaran part de la vista.
Exemple de vista de creació de MySQL
A continuació es mostra una taula de mostra creada a MYSQL.
Nom de l'esquema: pacífic
Nom de la taula: empleats
Noms de columna:
empNum : Manté valors enters per al número d'empleat.
cognom : Manté els valors varchar del cognom de l’empleat.
nom : Manté els valors varchar per al nom de l’empleat.
correu electrònic : Manté valors varchar per a l'identificador de correu electrònic de l'empleat.
deptNum : Manté el registre de identificació del departament al qual pertany un empleat.
sou : Manté els valors decimals del salari per a cada empleat.
Data d'inici : Manté valors de data per a la data d’incorporació de l’empleat.
Nom de l'esquema: pacífic
Nom de la taula: departaments
Noms de columna:
deptNum; Manté el varchar per a la identificació del departament dins d'una organització.
ciutat: Manté el nom de la ciutat des d'on treballen els departaments.
país: Manté el nom del país corresponent a la ciutat.
bonificació Manté el valor percentual de la bonificació.
MySQL Simple Crea una vista
Ara creem una vista a la part superior de la taula anterior.
A continuació es mostra la consulta.
La clàusula SELECT pot incloure noms de columna específics o podem utilitzar '*' per obtenir totes les columnes. Un cop hem creat una vista, no podem afegir ni suprimir les columnes. Si volem afegir o suprimir columnes, haurem de crear una vista nova o substituir aquesta vista existent.
La sentència de sortida mostra que les sentències SQL CREATE VIEW s'han executat amb èxit. També diu que no s'ha vist afectada cap fila. Això implica que quan es crea una fila nova, no afecta les dades de la taula subjacent.
Ara consultem la vista.
Consulta:
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 ;
Resultat:
empNum | cognom | nom | correu electrònic | deptNum | sou | Data d'inici |
---|---|---|---|---|---|---|
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 | 2 | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | llegeix | Pere | pl@gmail.com | 2 | 14332.5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | 2 | 16537.5 | 0001-01-01 |
1009 | Copa | Harry | hb@gmail.com | 5 | 30645.6 | 0001-01-01 |
1011 | Hanks | Tom | th@gmail.com | NUL | 10100 | 0001-01-01 |
1012 | Luter | Martin | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 | Branson | Joan | jb@gmail.com | 2 | 15000 | 0001-01-01 |
1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | Vigília | ej@gmail.com | 3 | 5500 | 2019.11.25 |
1018 | Llaç | Nolan | nb@gmail.com | 2 | 15000 | 2019.09.13 |
Crea una vista mitjançant GRUP PER I ORDENAR PER
Suposem un escenari en què necessitem obtenir l’import total del salari, per departaments.
A continuació es mostra la consulta:
En lloc d’executar aquesta consulta a la taula cada vegada, necessitem la informació, és millor consultar la vista, ja que consumirà menys fonts de base de dades.
Ara, vegem el contingut de la nostra visualització. Trobarem quant envia cada departament als seus empleats en termes de sous.
Consulta:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Conjunt de resultats:
deptNum | suma (salari) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | 2 | Charlotte | Estats Units | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
3 | 42994.4 | |||||
2 | 69.690 | |||||
1 | 44096.2 | |||||
NUL | 10100 |
El valor NULL de deptNum indica que un empleat no forma part de cap departament, sinó que està en nòmines de l'organització.
Vista de creació de MySQL mitjançant JOIN
Suposem que volem obtenir dades sobre el departament, la ciutat on es troba i el bo que s’ofereix als seus empleats. Necessitem aquesta informació per a tots els empleats.
Per aconseguir-ho, utilitzarem la paraula clau JOIN per obtenir dades de la taula de departaments i empleats.
Vegem la consulta i el seu resultat.
Aquí podem utilitzar diferents tipus de JOIN, com ara JOIN INTERIOR, JOIN EXTERIOR ESQUERRA, JOIN EXTERIOR DRET o JOIN EXTERIOR COMPLET en funció del nostre requisit.
Consulta:
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 ;
Executem ara una consulta SELECT en aquesta vista per veure la sortida:
Conjunt de resultats:
empNum | cognom | nom | deptNum | ciutat | país | bonificació |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | 1 | Nova York | Estats Units | 3 |
1002 | Schwatz | Mike | 1 | Nova York | Estats Units | 3 |
1004 | Harera | Sandra | 1 | Nova York | Estats Units | 3 |
1014 | Murray | Keith | 1 | Nova York | Estats Units | 3 |
1003 | Langley | Margaret | 2 | Charlotte | Estats Units | 5 |
1005 | llegeix | Pere | 2 | Charlotte | Estats Units | 5 |
1015 | Branson | Joan | 2 | Charlotte | Estats Units | 5 |
1018 | Llaç | Nolan | 2 | Charlotte | Estats Units | 5 |
1008 | Bailey | Oliver | 3 | Chicago | Estats Units | 8 |
1012 | Luter | Martin | 3 | Chicago | Estats Units | 8 |
1017 | Johnson | Vigília | 3 | Chicago | Estats Units | 8 |
1016 | Martin | Richard | 4 | Londres | Anglaterra | 10 |
1009 | Copa | Harry | 5 | Berlín | Alemanya | 13 |
Crea una visualització mitjançant la subconsulta
En aquest tipus d’instrucció create view, intentem obtenir el valor d’una columna on la clàusula es basa en la sortida d’una subconsulta. Per exemple, hem de trobar tots aquells empleats que tinguin un salari superior al salari mitjà de l’organització.
Vegem la consulta:
Consulta:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Conjunt de resultats:
empNum | cognom | nom | sou |
---|---|---|---|
1018 | Llaç | Nolan | 15000 |
1005 | llegeix | Pere | 14332.5 |
1006 | Keith | Jenny | 16537.5 |
1008 | Bailey | Oliver | 24494.4 |
1009 | Copa | Harry | 30645.6 |
1014 | Murray | Keith | 25000 |
1015 | Branson | Joan | 15000 |
Gestió de visualitzacions
Utilitzant la vista Alter o Crea / Substitueix la vista, podem modificar / substituir qualsevol vista. No és vàlid utilitzar ALTER VIEW explícitament per recompilar una vista.
Si teniu privilegis de sistema ALTER QUALSEVOL sistema o si la vista es troba al vostre esquema, podeu utilitzar la sentència ALTER VIEW.
com crear un programa d'ordinador per a principiants
Mitjançant la consulta Alter View, podem localitzar els errors de recompilació abans del temps d’execució. L’ús de la sentència ALTER VIEW pot afectar l’altre objecte / vista que en depèn. Per tant, podem recompilar una vista després de modificar-la.
Podem redefinir una visualització mitjançant Creació de visualitzacions i podem substituir la visualització existent per la consulta Substitueix la vista.
Per exemple, tingueu en compte empleats_visualitzar. Aquí tenim les columnes lastName i firstName junt amb algunes altres. Penseu que tenim el requisit de combinar les columnes firstName i lastName.
A continuació es mostra la instantània de la vista abans d’executar la consulta ALTER.
Ara executem la consulta ALTER VIEW per combinar el nom i el cognom.
La consulta es dóna a continuació:
Consulta:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Vegem ara el contingut dels empleats_visualitzats:
Si es nota, no tenim dues columnes separades per als noms. En lloc d’això, només tenim una columna que té el nom i el cognom concatenats.
Més informació = >> Funció MySQL CONCAT
Consulta:
SELECT * FROM employees_view;
Conjunt de resultats:
empNum | empName | correu electrònic | deptNum | sou | Data d'inici |
---|---|---|---|---|---|
1008 | Oliver Bailey | oliver.bailey@gmail.com | 3 | 24.494 | 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 | 2 | 8820 | 0001-01-01 |
1004 | Sandra harera | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | 2 | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | 2 | 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 | 2 | 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 | 2 | 15000 | 2019.09.13 |
Eliminar una vista
Podem deixar anar una visualització mitjançant la sentència DROP VIEW. Es pot utilitzar DROP VIEW si tenen privilegis DROP QUALSEVOL visualització o, si no, hauria d’estar al seu esquema. La vista caiguda no afecta la taula subjacent sobre la qual s'ha construït la vista ni les dades d'aquesta taula.
Consulta:
DROP VIEW (view name);
Preguntes freqüents
Q # 1) Com crear vistes a MySQL?
Resposta: Hi ha diverses maneres de crear vistes a MySQL. Hem recorregut quatre maneres diferents com es mostra a continuació.
1. MySQL Simple Crea una vista
2. MySQL Create View mitjançant GROUP BY i ORDER BY
3. Vista de creació de MySQL mitjançant JOIN
4. Vista de creació de MySQL mitjançant la subconsulta
Q # 2) Què és una visualització a MySQL?
Resposta: Les visualitzacions són com consultes preexecutades emmagatzemades en una estructura lògica, de manera que no hem de tornar a executar les consultes complexes de la taula. Només podem consultar la vista i obtenir les nostres dades sense afectar la taula.
Q # 3) Podem aplicar unir-se a les visualitzacions mentre en creem vistes?
Resposta: Sí, les instruccions JOIN es podrien utilitzar a les vistes, de la mateixa manera que les fem servir a les taules.
Q # 4) Podem crear una vista des d'una altra vista?
Resposta: Les vistes actuen essencialment com a taules, però com a virtuals. Per tant, la manera com creem vistes a la part superior d’una taula, podem crear vistes de manera similar a la part superior d’una altra vista.
Q # 5) Per què fem servir visualitzacions?
Resposta: Com a resultat de la consulta SQL, la vista crea una taula lògica. Utilitzem visualitzacions pels motius següents.
- Mitjançant l'ús de la visualització, podem limitar la visibilitat de files i columnes (mitjançant la clàusula Selecciona i On) per a tasques rellevants.
- Les vistes s’utilitzen quan combinem files i columnes (mitjançant Unió i Join) de diverses taules.
- Per obtenir una presentació més clara de les files d'agregació (utilitzant Agrupa per i Tenint) en una taula amb més detalls.
- Les vistes s’utilitzen mentre es canvia el nom o es descodifica una columna (mitjançant AS) o files (mitjançant JOIN, IF, CASE o el DECODE d’Oracle).
- Combinant qualsevol de les opcions anteriors amb configuracions de seguretat, podem comprovar si l'usuari només té accés al que està autoritzat.
Conclusió
En aquest tutorial, hem explorat les diferents maneres de crear una vista a MySQL.
1. MySQL Simple Crea una vista
2. MySQL Create View mitjançant GROUP BY i ORDER BY
3. Vista de creació de MySQL mitjançant JOIN
4. Vista de creació de MySQL mitjançant la subconsulta
Podem triar qualsevol d’aquestes opcions en funció dels requisits del projecte.
Més lectura = >> TAULA CREA MySQL
Feliç aprenentatge !!
Lectura recomanada
- TAULA D'ALTERACIÓ MySQL: com afegir una columna a una taula de MySQL
- Funcions MySQL CONCAT i GROUP_CONCAT amb exemples
- MySQL COUNT I COUNT DISTINCT Amb exemples
- MySQL Create Database - Com crear una base de dades a MySQL
- MySQL CREA USUARI: Com crear un usuari nou a MySQL
- Tutorial MySQL Create View amb exemples de codi
- Clàusula MySQL GROUP BY: tutorial amb exemples
- Tutorial MySQL JOIN: Interior, exterior, creuat, esquerre, dret i autònom