Les vues
Les vues sont des requêtes SQL stockées qui peuvent être utilisées comme des tables.
Elles permettent de simplifier les requêtes complexes, de masquer la complexité des données et de sécuriser l’accès aux données.
Création d’une vue
1CREATE VIEW nom_vue AS2SELECT colonne1, colonne2, ...3FROM nom_table4WHERE condition
Exemple
1CREATE VIEW vue_commandes AS2SELECT numeroCommande, dateCommande, total3FROM Commandes
Utilisation d’une vue
1SELECT *2FROM nom_vue
Exemple
1SELECT *2FROM vue_commandes
Mise à jour d’une vue
1CREATE OR REPLACE VIEW nom_vue AS2SELECT colonne1, colonne2, ...3FROM nom_table4WHERE condition
Exemple
1CREATE OR REPLACE VIEW vue_commandes AS2SELECT numeroCommande, dateCommande, total3FROM Commandes4WHERE total > 100
Suppression d’une vue
1DROP VIEW nom_vue
ou
1DROP VIEW IF EXISTS nom_vue;
Exemple
1DROP VIEW IF EXISTS vue_commandes
Conclusion
- Les vues sont des requêtes SQL stockées qui peuvent être utilisées comme des tables
- Les vues permettent de simplifier les requêtes complexes, de masquer la complexité des données et de sécuriser l’accès aux données
- Les vues peuvent être créées, mises à jour et supprimées à l’aide des commandes
CREATE VIEW
,CREATE OR REPLACE VIEW
etDROP VIEW
Avantages
- Simplification des requêtes complexes
- Masquage de la complexité des données
- Sécurisation de l’accès aux données
Limitations
- Les vues ne peuvent pas contenir de contraintes de clés étrangères, de contraintes de vérification ou de triggers
- Etant une requête et pas une table à part entière, il n’est pas possible d’ajouter directement des données à une vue
Exercice
Créez une vue vue_details
dans la base de données Boutique
qui :
- affiche les détails des commandes
- avec les colonnes suivantes :
numeroCommande
,numeroProduit
,quantite
,prixUnitaire
,total
Rappel de la base de données Boutique
:
1Clients (numero, nom, prenom, rue, codePostal, ville, telephone, categorie, compte)2Commandes (numero, numeroClient*, dateCommande, statut)3Produits (numero, nom, prix, stock)4Details (numeroCommande*, numeroProduit*, quantite)
Solution
1CREATE VIEW vue_details AS2SELECT numeroCommande, numeroProduit, quantite, prixUnitaire, quantite * prixUnitaire AS total3FROM Details D, Produits P4WHERE D.numeroProduit = P.numeroProduit;