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
CREATE VIEW [IF NOT EXISTS] nom_vue ASSELECT ...;DROP VIEW [IF EXISTS] nom_vue;Exemple
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
- Une vue ne stocke aucune donnée : la requête est rejouée à chaque lecture, donc le résultat est toujours à jour.
- 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.
- 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.
- 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
- CREATE TABLECREATE TABLE déclare une nouvelle table : ses colonnes, leurs types et les contraintes qui protègent les données. C'est la traduction concrète d'un modèle MLD en schéma de base.
- WITH (CTE)Une CTE (WITH) donne un nom à un résultat intermédiaire, utilisable ensuite comme une table dans la requête. On découpe ainsi un calcul complexe en étapes lisibles et vérifiables.
- DROP TABLEDROP TABLE supprime définitivement une table, ses données, ses index et ses triggers. On le réserve aux tables temporaires ou aux migrations, jamais sans sauvegarde sur des données réelles.