MySQL Vues : Comment créer une vue à partir de tableaux

⚡ Résumé intelligent

MySQL Les vues sont des tables virtuelles qui ne stockent aucune donnée propre et présentent le résultat d'une requête SELECT enregistrée. Cette ressource explique comment créer, interroger, joindre et supprimer des vues, avec des exemples exécutables tirés de la base de données myflixdb.

  • 🧱 Définition principale : Une vue est une instruction SELECT nommée qui se comporte comme une table mais ne contient aucune donnée.
  • (I.e. Avantage de sécurité : Les vues n'affichent que les colonnes autorisées et masquent les champs sensibles aux utilisateurs.
  • ♻️ Avantage de la réutilisation : Une jointure complexe à plusieurs tables est écrite une seule fois et réutilisée comme une requête SELECT sur une seule ligne.
  • Syntaxe de création : L'instruction CREATE VIEW `nom_vue` AS SELECT définit la vue dans la base de données.
  • 🇧🇷 Commandes du cycle de vie : La commande SHOW CREATE VIEW affiche la requête enregistrée, et la commande DROP VIEW la supprime sans toucher aux tables de base.

MySQL Vues

Que sont les vues dans MySQL?

VUES sont des tables virtuelles qui ne stockent aucune donnée propre mais affichent les données stockées dans d'autres tables. En d’autres termes, les VUES ne sont rien d’autre que des requêtes SQL. Une vue peut contenir la totalité ou quelques lignes d'une table. UN MySQL La vue peut afficher les données d’une ou de plusieurs tables.

MySQL Syntaxe des vues

Examinons maintenant la syntaxe de base utilisée pour créer une vue dans MySQL.

CREATE VIEW `view_name` AS SELECT statement;

  • "CRÉER UNE VUE `view_name`" raconte MySQL serveur pour créer un objet de vue dans la base de données nommé `view_name`
  • "Instruction AS SELECT" sont les instructions SQL à emballer dans le MySQL Vues. Il peut s'agir d'une instruction SELECT pouvant contenir des données d'une ou de plusieurs tables.

Pourquoi utiliser des vues ?

Avant d'en construire une, il est utile de savoir ce qu'une vue vous apporte réellement.

Vous souhaiterez peut-être utiliser les vues principalement pour les 3 raisons suivantes

  • Finalement, vous utiliserez votre SQL Pour créer des applications utilisant une base de données, il est recommandé d'utiliser des vues de la structure de table d'origine plutôt que les tables elles-mêmes. Ainsi, lors d'une refonte de votre base de données, votre code existant accédera au schéma d'origine via la vue, sans impacter l'application.
  • Les VUES augmentent la réutilisation. Vous n’aurez pas à créer des requêtes complexes impliquant des jointures à plusieurs reprises. Toute la complexité est convertie en une seule ligne de requête utilisant VIEWS. Un tel code condensé sera plus facile à intégrer dans votre application. Cela éliminera les risques de fautes de frappe et votre code sera plus lisible.
  • VIEWS aide à la sécurité des données. Vous pouvez utiliser les vues pour afficher uniquement les informations autorisées aux utilisateurs et masquer les données sensibles telles que les numéros de carte de crédit.

Comment créer des vues dans MySQL

Une fois la syntaxe et les avantages établis, les étapes ci-dessous permettent de construire une vue fonctionnelle de bout en bout.

Voici un processus étape par étape pour créer une vue dans MySQL:

Étape 1) Créez notre première vue en utilisant « myflixdb »

Créons maintenant notre première vue en utilisant « myflixdb », nous allons créer une vue simple qui restreint les colonnes vues dans la table des membres.

Supposons que les exigences d'autorisation stipulent que le service comptable ne peut consulter que le numéro, le nom et le sexe du membre dans la table des membres. Pour ce faire, vous pouvez créer une vue.

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

Étape 2) Extension du nœud de vues

Exécuter le script ci-dessus dans MySQL l'établi contre myflixdb et l'extension du nœud de vues dans l'explorateur de base de données nous donne les résultats suivants.

Créer des vues dans MySQL

Notez que l'objet comptes_v_members est désormais visible dans les objets de vues de base de données.

Étape 3) Exécuter une instruction SELECT

Exécutons maintenant un Instruction SELECT qui sélectionne tous les champs de la vue comme indiqué ci-dessous MySQL créer un exemple de vue.

SELECT * FROM `accounts_v_members`;

Étape 4) Exécuter un script

Exécuter le script ci-dessus dans MySQL workbench contre myflixdb nous donne les résultats suivants indiqués ci-dessous.

membership_number full_names gender
1 Janet Jones Female
2 Janet Smith Jones Female
3 Robert Phil Male
4 Gloria Williams Female
5 Leonard Hofstadter Male
6 Sheldon Cooper Male
7 Rajesh Koothrappali Male
8 Leslie Winkle Male
9 Howard Wolowitz Male

Seules les colonnes autorisées pour le service comptable ont été affichées. Les autres informations contenues dans la table des membres ont été masquées.

Si nous voulons voir les instructions SQL qui composent une vue particulière, nous pouvons utiliser le script ci-dessous pour le faire.

SHOW CREATE VIEW `accounts_v_members`;

L'exécution du script ci-dessus vous donne le nom de la vue et les instructions SQL SELECT utilisées pour créer la vue.

Jointures et vues dans MySQL

Une vue portant sur une seule table est le cas le plus simple. Les vues prennent toute leur valeur lorsqu'elles encapsulent une requête portant sur plusieurs tables.

Regardons maintenant un exemple assez complexe qui implique plusieurs tables et utilisations jointures.

Nous regrouperons le JOIN créé qui obtient les informations de trois (3) tables, à savoir les membres, les films et les locations de films. Vous trouverez ci-dessous le script qui nous aide à y parvenir.

CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date`
FROM `movierentals` AS mr
INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number`
INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;

L'exécution des scripts ci-dessus crée la vue nommée general_v_movie_rentals dans notre myflixdb

Sélectionnons maintenant tous les champs d'une table nommée general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Exécuter le script ci-dessus dans MySQL établi contre myflixdb nous donne les résultats suivants présentés ci-dessous.

membership_number full_names title transaction_date return_date
1 Janet Jones Pirates of the Caribean 4 20-06-2012 28-06-2012
1 Janet Jones Forgetting Sarah Marshal 22-06-2012 25-06-2012
3 Robert Phil Forgetting Sarah Marshal 22-06-2012 25-06-2012
2 Janet Smith Jones Forgetting Sarah Marshal 21-06-2012 24-06-2012
3 Robert Phil X-Men 23-06-2012 28-06-2012

Notez que nous n'avons pas eu besoin d'écrire la requête complexe JOIN pour obtenir des informations sur les membres, les films et les détails de location de films. Nous avons simplement utilisé la vue dans une instruction SELECT normale comme n'importe quelle autre table ordinaire. La vue peut être appelée depuis n’importe où dans le système d’application exécuté au-dessus de myflixdb.

Goutteping Vues dans MySQL

La commande DROP peut être utilisée pour supprimer une vue du base de données ce n’est plus nécessaire. La syntaxe de base pour supprimer une vue est la suivante.

DROP VIEW `general_v_movie_rentals`;

Goutteping Une vue supprime uniquement la requête enregistrée ; les tables sous-jacentes et leurs données restent intactes.

FAQ

Parfois, les opérations INSERT, UPDATE et DELETE ne fonctionnent que sur les vues simples contenant toutes les colonnes NOT NULL de la table de base. Les vues construites à partir de jointures ou de fonctions d'agrégation ne sont pas modifiables.

Une table stocke physiquement les lignes sur le disque. Une vue, quant à elle, ne stocke qu'une instruction SELECT et reconstruit ses lignes à chaque requête, reflétant ainsi toujours les données actuelles des tables de base.

Non. Une vue exécute sa requête SELECT sous-jacente à chaque appel, les performances sont donc identiques à celles de la requête d'origine. MySQL ne comporte aucune vue matérialisée et la vitesse dépend toujours des index de la table de base.

Oui. Les assistants IA dans des outils tels que MySQL Workbench Il est possible de rédiger une instruction CREATE VIEW à partir d'une description. Vérifiez la liste des colonnes et les clés de jointure avant de l'exécuter.

En partie. L'IA peut identifier les colonnes sensibles, comme les numéros de carte, et proposer une liste de colonnes plus sûres. La décision finale doit toutefois respecter la politique d'accès aux données de votre organisation.

Résumez cet article avec :