Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

Views (Vues)

Icône Présentation
1 / 1

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

CREATE VIEW nom_vue AS
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE condition

Exemple

CREATE VIEW vue_commandes AS
SELECT numeroCommande, dateCommande, total
FROM Commandes

Utilisation d’une vue

SELECT *
FROM nom_vue

Exemple

SELECT *
FROM vue_commandes

Mise à jour d’une vue

CREATE OR REPLACE VIEW nom_vue AS
SELECT colonne1, colonne2, ...
FROM nom_table
WHERE condition

Exemple

CREATE OR REPLACE VIEW vue_commandes AS
SELECT numeroCommande, dateCommande, total
FROM Commandes
WHERE total > 100

Suppression d’une vue

DROP VIEW nom_vue

ou

DROP VIEW IF EXISTS nom_vue;

Exemple

DROP 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 et DROP 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 :

Clients (numero, nom, prenom, rue, codePostal, ville, telephone, categorie, compte)
Commandes (numero, numeroClient*, dateCommande, statut)
Produits (numero, nom, prix, stock)
Details (numeroCommande*, numeroProduit*, quantite)
Solution
CREATE VIEW vue_details AS
SELECT numeroCommande, numeroProduit, quantite, prixUnitaire, quantite * prixUnitaire AS total
FROM Details D, Produits P
WHERE D.numeroProduit = P.numeroProduit;