Vues et Vues matérialisées
Une VIEW est une table virtuelle :
• Elle ne stocke pas les données
• Elle stocke uniquement la requête SQL
• Les données sont lues en temps réel depuis les
tables de base
Avantages
•Sécurité (masquer certaines colonnes)
•Simplification des requêtes complexes
•Réutilisation
Créer une vue vue_salaire_eleve contenant les
employés ayant un salaire > 6000
CREATE VIEW vue_salaire_eleve AS
SELECT id, nom, salaire
FROM Employe
WHERE salaire > 6000;
Mise à jour via une vue
Une vue est modifiable si :
• Elle concerne une seule table
• Pas de GROUP BY, DISTINCT, JOIN, COUNT.
Augmenter le salaire de l’employé id = 3 via la vue
augmentation_salaire
UPDATE augmentation_salaire
SET salaire = salaire + 500
WHERE id = 3;
Créer une vue affichant le salaire moyen par
département
CREATE VIEW vue_moyenne_salaire AS
SELECT departement, AVG(salaire) AS salaire_moyen
FROM Employe
GROUP BY departement;
VIEW MATÉRIALISÉE
Une vue matérialisée :
• Stocke physiquement les données
• Améliore les performances
• Peut être rafraîchie automatiquement ou
manuellement
Créer une vue matérialisée vue_salaire_eleve
contenant les employés ayant un salaire > 6000
CREATE MATERIALIZED VIEW vm_employes
BUILD IMMEDIATE
REFRESH COMPLETE
AS
SELECT * FROM Employe
WHERE salaire > 6000;
INSERT INTO Employe VALUES (10, 'Ali', 7000, 'IT');
Select * from vue_salaire_eleve
Select * from vm_employes
BEGIN
DBMS_MVIEW.REFRESH('VM_EMPLOYES');
END;
/
Refresh après 1 minute
CREATE MATERIALIZED VIEW vm_employes
REFRESH COMPLETE
START WITH SYSDATE
NEXT SYSDATE + (1/1440)
AS
SELECT * FROM Employe WHERE salaire > 6000;
COMMIT
L’exécution d’un COMMIT déclenche le
rafraîchissement de la vue matérialisée définie
avec ON COMMIT.
CREATE MATERIALIZED VIEW vm_employes
REFRESH COMPLETE ON COMMIT
AS
SELECT * FROM Employe;