Aller au contenu
Structure (DDL)

CREATE VIEW (vues)

Une vue est une requête enregistrée sous un nom, qu'on interroge ensuite comme une table. Elle évite de réécrire une jointure complexe et permet de n'exposer que certaines colonnes.

  • vue
  • view
  • CREATE VIEW
  • requête stockée
  • vue matérialisée

Syntaxe

Modèle
CREATE VIEW [IF NOT EXISTS] nom_vue ASSELECT ...;DROP VIEW [IF EXISTS] nom_vue;

Exemple

Exemple concret
CREATE VIEW v_ca_client ASSELECT c.name AS client,       ROUND(SUM(oi.quantity * p.price), 2) AS chiffre_affairesFROM customers cJOIN orders o ON o.customer_id = c.idJOIN order_items oi ON oi.order_id = o.idJOIN products p ON p.id = oi.product_idWHERE o.status <> 'annulé'GROUP BY c.id, c.name;SELECT * FROM v_ca_clientORDER BY chiffre_affaires DESC;-- Jeu de données : boutique-- Résultat attendu :-- Lucas Martin | 209.96-- Emma Dubois | 179.98-- Hugo Lambert | 109.98

À retenir

  1. Une vue ne stocke aucune donnée : la requête est rejouée à chaque lecture, donc le résultat est toujours à jour.
  2. Piège : dans SQLite, une vue est en lecture seule. INSERT, UPDATE et DELETE sur une vue échouent, sauf si l'on écrit un trigger INSTEAD OF.
  3. SQLite n'a pas de vue matérialisée. PostgreSQL propose CREATE MATERIALIZED VIEW, qui stocke le résultat et se rafraîchit avec REFRESH MATERIALIZED VIEW.
  4. Ne mettez pas d'ORDER BY dans la définition de la vue : triez dans la requête qui la lit, sinon l'ordre n'est pas garanti après une jointure.

Voir aussi