Vues MySQL: Comment créer une vue à partir de tables avec des exemples

Table des matières:

Anonim

Que sont les vues dans MySQL?

Les VIEWS sont des tables virtuelles qui ne stockent aucune donnée propre mais affichent des 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 toutes ou quelques lignes d'une table. Une vue MySQL peut afficher les données d'une ou de plusieurs tables.

Syntaxe des vues MySQL

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

CREATE VIEW `view_name` AS SELECT statement;

  • "CREATE VIEW` view_name` " indique au serveur MySQL de créer un objet de vue dans la base de données nommé` view_name`
  • "Instruction AS SELECT" est les instructions SQL à compresser dans les vues MySQL. Il peut s'agir d'une instruction SELECT pouvant contenir des données d'une ou de plusieurs tables.

Comment créer des vues dans MySQL

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

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

Supposons que les exigences d'autorisation indiquent que le service des comptes ne peut voir que le numéro, le nom et le sexe du membre dans la table du membre. Pour y parvenir, vous pouvez créer une vue -

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

L'exécution du script ci-dessus dans MySQL workbench par rapport à myflixdb et l'extension du nœud de vues dans l'explorateur de base de données nous donne les résultats suivants.

Notez que l'objet accounts_v_members est maintenant visible dans les objets vues de la base de données. Exécutons maintenant une instruction SELECT qui sélectionne tous les champs de la vue, comme indiqué dans l'exemple de création de vue MySQL ci-dessous.

SELECT * FROM `accounts_v_members`;

L'exécution du 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 comptabilité ont été renvoyées. D'autres détails trouvés dans le tableau des membres ont été masqués.

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

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

Nous emballerons le JOIN créé qui obtient des 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`;

L'exécution du script ci-dessus dans MySQL workbench sur myflixdb nous donne les résultats suivants indiqué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 à écrire la requête JOIN complexe 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 régulière comme n'importe quelle autre table ordinaire. La vue peut être appelée de n'importe où dans le système d'application fonctionnant au-dessus de myflixdb.

Suppression de vues dans MySQL

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

DROP VIEW ` general_v_movie_rentals `;

Pourquoi utiliser des vues?

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

  • En fin de compte, vous utiliserez vos connaissances SQL pour créer des applications, qui utiliseront une base de données pour les besoins en données. Il est recommandé d'utiliser les VUES de la structure de table d'origine dans votre application au lieu d'utiliser les tables elles-mêmes. Cela garantit que lorsque vous refactorisez votre base de données, votre code hérité verra le schéma original via la vue sans interrompre l'application.
  • Les VUES augmentent la réutilisabilité. Vous n'aurez pas à créer de requêtes complexes impliquant des jointures à plusieurs reprises. Toute la complexité est convertie en une seule ligne de requête d'utilisation 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 comme les numéros de carte de crédit.

Résumé

  • Les vues sont des tables virtuelles; ils ne contiennent pas les données renvoyées. Les données sont stockées dans les tables référencées dans l'instruction SELECT.
  • Les vues améliorent la sécurité de la base de données en affichant uniquement les données prévues aux utilisateurs autorisés. Ils cachent des données sensibles.
  • Les vues vous facilitent la vie car vous n'avez pas à écrire des requêtes complexes à maintes reprises.
  • Il est possible d'utiliser INSERT, UPDATE et DELETE sur une VIEW. Ces opérations modifieront les tables sous-jacentes de la VUE. La seule considération est que VIEW doit contenir toutes les colonnes NOT NULL des tables auxquelles il fait référence. Idéalement, vous ne devriez pas utiliser VIEWS pour la mise à jour.