Atelier : Gestion des vues¶
1. Créer une vue pour les clients en province¶
CREATE VIEW v_clients_province AS
SELECT societe, adresse, telephone, ville
FROM clients
WHERE pays = 'France'
AND code_postal NOT LIKE '75%'
AND code_postal NOT LIKE '77%'
AND code_postal NOT LIKE '78%'
AND code_postal NOT LIKE '91%'
AND code_postal NOT LIKE '92%'
AND code_postal NOT LIKE '93%'
AND code_postal NOT LIKE '94%'
AND code_postal NOT LIKE '95%';Voici un exercice supplémentaire pour la création d’une vue :
2. Créer une vue pour les produits disponibles en stock¶
CREATE VIEW v_produits_disponibles AS
SELECT ref_produit, nom_produit, prix_unitaire, unites_stock
FROM produits
WHERE unites_stock > 0;3. Supprimer une vue existante¶
4. Création de Vue Matérialisée, Jointure et Filtrage¶
-- Création de la vue matérialisée initiale
CREATE MATERIALIZED VIEW vue_commandes_clients AS
SELECT
c.CODE_CLIENT,
c.SOCIETE,
co.NO_COMMANDE,
co.DATE_COMMANDE,
dc.REF_PRODUIT,
dc.QUANTITE,
dc.PRIX_UNITAIRE
FROM
clients c
JOIN
commandes co ON c.CODE_CLIENT = co.CODE_CLIENT
JOIN
details_commandes dc ON co.NO_COMMANDE = dc.NO_COMMANDE;
-- Modification de la vue pour inclure les informations des employés
CREATE MATERIALIZED VIEW vue_commandes_clients_employes AS
SELECT
c.CODE_CLIENT,
c.SOCIETE,
co.NO_COMMANDE,
co.DATE_COMMANDE,
dc.REF_PRODUIT,
dc.QUANTITE,
dc.PRIX_UNITAIRE,
e.NOM,
e.PRENOM
FROM
clients c
JOIN
commandes co ON c.CODE_CLIENT = co.CODE_CLIENT
JOIN
details_commandes dc ON co.NO_COMMANDE = dc.NO_COMMANDE
JOIN
employes e ON co.NO_EMPLOYE = e.NO_EMPLOYE;
-- Ajout d'un filtre pour les commandes après le 1er janvier 2023
CREATE MATERIALIZED VIEW vue_commandes_clients_employes_filtre AS
SELECT
c.CODE_CLIENT,
c.SOCIETE,
co.NO_COMMANDE,
co.DATE_COMMANDE,
dc.REF_PRODUIT,
dc.QUANTITE,
dc.PRIX_UNITAIRE,
e.NOM,
e.PRENOM
FROM
clients c
JOIN
commandes co ON c.CODE_CLIENT = co.CODE_CLIENT
JOIN
details_commandes dc ON co.NO_COMMANDE = dc.NO_COMMANDE
JOIN
employes e ON co.NO_EMPLOYE = e.NO_EMPLOYE
WHERE
co.DATE_COMMANDE > '1997-01-01';