mysql create view tutorial with code examples
Ce didacticiel MySQL Create View explique tout sur la création d'une vue dans MySQL à l'aide de différentes clauses et exemples. Il explique également comment supprimer et gérer les vues:
Dans MySQL, view est une table virtuelle qui nous permet de regarder les données de la table sans bloquer l'accès à la table par d'autres programmes et ainsi nous aider à éviter les situations de blocage.
Les vues sont créées sur une ou plusieurs tables contenant des données. Avant de continuer, veuillez noter que nous utilisons MySQL version 8.0 .
Ce que vous apprendrez:
MySQL Create View
Syntaxe:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Explication de la syntaxe:
- La syntaxe commence par le mot-clé «CREATE VIEW», informant ainsi le serveur MySQL du type d'activité à effectuer. Ceci est un mot-clé obligatoire et ne peut pas être omis.
- REPLACE est un paramètre facultatif. Nous pouvons l'utiliser pendant que nous travaillons sur une vue existante.
- Vient ensuite le nom de la vue. Il doit être unique, tout comme les noms des tables et des colonnes.
- Ensuite, sélectionnez les colonnes du tableau. Une vue peut avoir toutes les colonnes de la table sous-jacente ou seulement quelques-unes sélectionnées.
- Vient ensuite le nom de la table sur laquelle la vue doit être effectuée. Ceci est obligatoire et ne peut être omis.
- Vient ensuite la condition WHERE, qui restreint ou filtre le nombre de lignes cibles sur lesquelles l'action CREATE VIEW doit être appliquée. WHERE est également un mot-clé, mais facultatif.
La clause WHERE est cependant significative. Si ce n'est pas mentionné, ou si la condition n'est pas définie correctement, la table entière ou les lignes non requises feront partie de la vue.
Exemple de création de vue MySQL
Vous trouverez ci-dessous un exemple de tableau créé dans MYSQL.
Nom du schéma: pacifique
Nom de la table: des employés
Noms de colonne:
empNum : Contient des valeurs entières pour le numéro d'employé.
nom de famille : Contient les valeurs varchar pour le nom de famille de l'employé.
Prénom : Contient les valeurs varchar pour le prénom de l'employé.
e-mail : Contient les valeurs varchar pour l'ID de messagerie de l'employé.
deptNum : Contient varchar pour l'ID de service auquel appartient un employé.
un salaire : Contient les valeurs décimales du salaire de chaque employé.
date de début : Contient les valeurs de date pour la date de recrutement de l'employé.
Nom du schéma: pacifique
Nom de la table: départements
Noms de colonne:
deptNum; Contient varchar pour l'ID de service au sein d'une organisation.
ville: Contient le nom de la ville dans laquelle les services travaillent.
de campagne: Contient le nom du pays correspondant à la ville.
prime Contient la valeur en pourcentage du bonus.
MySQL Simple Créer une vue
Créons maintenant une vue en haut du tableau ci-dessus.
Ci-dessous est la requête.
La clause SELECT peut être avec des noms de colonnes spécifiques ou nous pouvons utiliser «*», pour obtenir toutes les colonnes. Une fois que nous créons une vue, nous ne pouvons ni ajouter ni supprimer les colonnes. Si nous voulons ajouter ou supprimer des colonnes, nous devrons soit créer une nouvelle vue, soit remplacer cette vue existante.
L'instruction de sortie montre que les instructions SQL CREATE VIEW ont été exécutées avec succès. Il indique également qu'aucune ligne n'a été affectée. Cela implique que lorsqu'une nouvelle ligne est créée, elle n'a aucun impact sur les données de la table sous-jacente.
Interrogons maintenant la vue.
Mettre en doute:
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 ;
ResultSet:
empNum | nom de famille | Prénom | deptNum | un salaire | date de début | |
---|---|---|---|---|---|---|
1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494,4 | 0001-01-01 |
1001 | Andrews | Jack | ja@gmail.com | un | 3182,7 | 0001-01-01 |
1002 | Schwatz | Mike | ms@gmail.com | un | 5304,5 | 0001-01-01 |
1003 | Langley | Margaret | margaret.langley@gmail.com | deux | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | un | 10609 | 0001-01-01 |
1005 | lire | Peter | pl@gmail.com | deux | 14332,5 | 0001-01-01 |
1006 | Keith | Jenny | jk@gmail.com | deux | 16537,5 | 0001-01-01 |
1009 | tasse | Harry | hb@gmail.com | 5 | 30645,6 | 0001-01-01 |
1011 | Hanks | À M | th@gmail.com | NUL | 10100 | 0001-01-01 |
1012 | Luther | Martin | ml@gmail.com | 3 | 13 000 | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | un | 25 000 | 0001-01-01 |
1015 | Branson | John | jb@gmail.com | deux | 15 000 | 0001-01-01 |
1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | Veille | ej@gmail.com | 3 | 5500 | 25/11/2019 |
1018 | Lier | Nolan | nb@gmail.com | deux | 15 000 | 13/09/2019 |
Créer une vue à l'aide de GROUP BY et ORDER BY
Supposons un scénario où nous devons obtenir le montant total du salaire, par département.
Ci-dessous la requête:
Plutôt que d'exécuter cette requête dans la table à chaque fois, nous avons besoin des informations, il est préférable d'interroger la vue car cela consommera moins de sources de base de données.
Voyons maintenant le contenu de notre vue. Nous verrons combien chaque département envoie à ses employés en termes de salaires.
Mettre en doute:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Ensemble de résultats:
deptNum | somme (salaire) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Jenny | deux | Charlotte | États-Unis | 5 |
5 | 30645,6 | |||||
4 | 5000 | |||||
3 | 42994,4 | |||||
deux | 69690 | |||||
un | 44096,2 | |||||
NUL | 10100 |
La valeur NULL dans deptNum indique qu'un employé ne fait partie d'aucun service mais est inscrit sur la liste de paie de l'organisation.
MySQL Créer une vue à l'aide de JOIN
Supposons que nous souhaitons obtenir des données sur le département, la ville dans laquelle il est basé et le bonus offert à ses employés. Nous avons besoin de ces informations pour chaque employé.
Pour ce faire, nous utiliserons le mot clé JOIN pour obtenir les données de la table des départements et des employés.
Jetons un coup d'œil à la requête et à sa sortie.
Nous pouvons utiliser différents types de JOIN ici, comme INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN ou FULL OUTER JOIN selon nos besoins.
Mettre en doute:
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 ;
Exécutons maintenant une requête SELECT sur cette vue pour voir le résultat:
Ensemble de résultats:
empNum | nom de famille | Prénom | deptNum | ville | de campagne | prime |
---|---|---|---|---|---|---|
1001 | Andrews | Jack | un | New York | États-Unis | 3 |
1002 | Schwatz | Mike | un | New York | États-Unis | 3 |
1004 | Harera | Sandra | un | New York | États-Unis | 3 |
1014 | Murray | Keith | un | New York | États-Unis | 3 |
1003 | Langley | Margaret | deux | Charlotte | États-Unis | 5 |
1005 | lire | Peter | deux | Charlotte | États-Unis | 5 |
1015 | Branson | John | deux | Charlotte | États-Unis | 5 |
1018 | Lier | Nolan | deux | Charlotte | États-Unis | 5 |
1008 | Bailey | Oliver | 3 | Chicago | États-Unis | 8 |
1012 | Luther | Martin | 3 | Chicago | États-Unis | 8 |
1017 | Johnson | Veille | 3 | Chicago | États-Unis | 8 |
1016 | Martin | Richard | 4 | Londres | Angleterre | dix |
1009 | tasse | Harry | 5 | Berlin | Allemagne | 13 |
Créer une vue à l'aide d'une sous-requête
Dans ce type d'instruction de création de vue, nous essayons de récupérer la valeur d'une colonne où la clause est basée sur la sortie d'une sous-requête. Disons que nous devons trouver tous ces employés dont le salaire est supérieur au salaire moyen de l'organisation.
Voyons la requête:
Mettre en doute:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Ensemble de résultats:
empNum | nom de famille | Prénom | un salaire |
---|---|---|---|
1018 | Lier | Nolan | 15 000 |
1005 | lire | Peter | 14332,5 |
1006 | Keith | Jenny | 16537,5 |
1008 | Bailey | Oliver | 24494,4 |
1009 | tasse | Harry | 30645,6 |
1014 | Murray | Keith | 25 000 |
1015 | Branson | John | 15 000 |
Gérer les vues
En utilisant Alter View ou Create / Replace view, nous pouvons modifier / remplacer n'importe quelle vue. L'utilisation explicite d'ALTER VIEW pour recompiler une vue n'est pas valide.
Si vous disposez des privilèges système ALTER ANY Table ou si la vue est dans votre schéma, vous pouvez utiliser l'instruction ALTER VIEW.
meilleur programme pour se débarrasser des logiciels malveillants
En utilisant la requête Alter View, nous pouvons localiser les erreurs de recompilation avant l'exécution. L'utilisation de l'instruction ALTER VIEW peut affecter l'autre objet / vue qui en dépend. Ainsi, nous pouvons recompiler une vue après la modification.
Nous pouvons redéfinir une vue en utilisant Créer une vue et remplacer la vue existante par la requête Remplacer la vue.
Par exemple, considérez employés_view. Ici, nous avons les colonnes lastName et firstName avec quelques autres. Considérez que nous avons l'obligation de fusionner les colonnes firstName et lastName.
Vous trouverez ci-dessous un instantané de la vue avant d'exécuter la requête ALTER.
Exécutons maintenant la requête ALTER VIEW pour fusionner le prénom et le nom.
La requête est donnée ci-dessous:
Mettre en doute:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Voyons maintenant le contenu de la employee_view:
Si vous pouvez remarquer, nous n'avons pas deux colonnes distinctes pour les noms. Au lieu de cela, nous avons juste une colonne qui a à la fois le prénom et le nom concaténés.
En savoir plus = >> Fonction MySQL CONCAT
Mettre en doute:
SELECT * FROM employees_view;
Ensemble de résultats:
empNum | empName | deptNum | un salaire | date de début | |
---|---|---|---|---|---|
1008 | Oliver Bailey | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
1001 | Jack Andrews | ja@gmail.com | un | 3182,7 | 0001-01-01 |
1002 | Mike Schwatz | ms@gmail.com | un | 5304,5 | 0001-01-01 |
1003 | Margaret Langley | margaret.langley@gmail.com | deux | 8820 | 0001-01-01 |
1004 | Sandra Harera | sh@gmail.com | un | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | deux | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | deux | 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 | 13 000 | 0001-01-01 |
1014 | Keith Murray | km@gmail.com | un | 25 000 | 0001-01-01 |
1015 | John Branson | jb@gmail.com | deux | 15 000 | 0001-01-01 |
1016 | Richard Martin | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Eve Johnson | ej@gmail.com | 3 | 5500 | 25/11/2019 |
1018 | Nolan Bond | nb@gmail.com | deux | 15 000 | 13/09/2019 |
Supprimer une vue
Nous pouvons supprimer une vue à l'aide de l'instruction DROP VIEW. On peut utiliser un DROP VIEW s’ils ont le privilège DROP ANY view ou bien il devrait être dans leur schéma. La vue tombante n'a aucun impact sur la table sous-jacente sur laquelle la vue a été créée ou sur les données de cette table.
Mettre en doute:
DROP VIEW (view name);
FAQ
Q # 1) Comment créer des vues dans MySQL?
Répondre: Il existe plusieurs façons de créer des vues dans MySQL. Nous avons parcouru quatre manières différentes, comme indiqué ci-dessous.
1. MySQL Simple Créer une vue
2. MySQL Create View en utilisant GROUP BY et ORDER BY
3. MySQL Create View à l'aide de JOIN
4. MySQL Créer une vue à l'aide d'une sous-requête
Q # 2) Qu'est-ce qu'une vue dans MySQL?
Répondre: Les vues sont comme des requêtes pré-exécutées stockées dans une structure logique afin que nous n'ayons pas à réexécuter les requêtes complexes sur la table. Nous pouvons simplement interroger la vue et obtenir nos données sans affecter la table.
Q # 3) Pouvons-nous appliquer JOIN sur des vues lors de la création de vues?
Répondre: Oui, les instructions JOIN pourraient être utilisées sur les vues, de la même manière que nous les utilisons sur les tables.
Q # 4) Pouvons-nous créer une vue à partir d'une autre vue?
Répondre: Les vues agissent essentiellement comme des tables, mais comme une table virtuelle. Par conséquent, la façon dont nous créons des vues au-dessus d'une table, nous pouvons de même créer des vues au-dessus d'une autre vue.
Q # 5) Pourquoi utilisons-nous des vues?
Répondre: À la suite de la requête SQL, la vue crée une table logique. Nous utilisons les vues pour les raisons suivantes.
- En utilisant la vue, nous pouvons limiter la visibilité des lignes et des colonnes (à l'aide de la clause Select et Where) pour les tâches pertinentes.
- Les vues sont utilisées lorsque nous combinons des lignes et des colonnes (en utilisant syndicat et Join) à partir de plusieurs tables.
- Pour obtenir une présentation plus distincte des lignes d'agrégation (en utilisant Grouper par et Avoir) dans un tableau avec des détails plus fins.
- Les vues sont utilisées lors du changement de nom ou du décodage de la colonne (en utilisant AS) ou des lignes (en utilisant JOIN, IF, CASE ou Oracle's DECODE).
- En combinant l'un des éléments ci-dessus avec les paramètres de sécurité, nous pouvons vérifier si l'utilisateur a accès à ce qu'il est uniquement autorisé.
Conclusion
Dans ce tutoriel, nous avons exploré les différentes manières de créer une vue dans MySQL.
1. MySQL Simple Créer une vue
2. MySQL Create View en utilisant GROUP BY et ORDER BY
3. MySQL Create View à l'aide de JOIN
4. MySQL Créer une vue à l'aide d'une sous-requête
Nous pouvons choisir l'une de ces options en fonction des exigences du projet.
Lectures complémentaires = >> MySQL CREATE TABLE
Bon apprentissage!!
lecture recommandée
- MySQL ALTER TABLE - Comment ajouter une colonne à une table dans MySQL
- Fonctions MySQL CONCAT et GROUP_CONCAT avec exemples
- MySQL COUNT et COUNT DISTINCT avec des exemples
- MySQL Create Database - Comment créer une base de données dans MySQL
- MySQL CREATE USER: Comment créer un nouvel utilisateur dans MySQL
- Tutoriel MySQL Create View avec des exemples de code
- Clause MySQL GROUP BY - Tutoriel avec des exemples
- Tutoriel MySQL JOIN: intérieur, extérieur, croix, gauche, droite et soi