Dans le monde de la gestion des bases de données, le langage SQL (Structured Query Language) est l’outil incontournable pour interagir avec celles-ci. Dans cet article, nous allons nous intéresser à un aspect particulier des requêtes SQL : les vues. Nous verrons la définition et des exemples concrets d’utilisation.
Qu’est-ce qu’une vue SQL ?
Une vue SQL est un objet de base de données qui représente le résultat d’une requête pré-définie. En d’autres termes, une vue est une sorte de « table virtuelle » dont la structure et les données sont issues du résultat d’une sélection effectuée sur une ou plusieurs tables existantes dans la base de données. L’objectif principal des vues est de simplifier et structurer l’accès aux données en créant des objets correspondants à des sous-ensembles précis des données de la base. Cela permet, par exemple, de préparer des données complexes pour faciliter leur utilisation ou de sécuriser l’accès à certaines informations sensibles.
Avantages d’utiliser des vues SQL
- Simplicité d’accès aux données : grâce à la création de vues spécifiques, il est plus facile pour les utilisateurs finaux d’interroger les données sans avoir besoin de connaître les structures complexes des tables sous-jacentes.
- Meilleure organisation des données : les vues permettent de créer des structures logiques, regroupant les données par thème ou fonctionnalité.
- Contrôle des accès : en restreignant l’accès aux données par le biais de vues, il est possible de sécuriser et protéger certaines informations sensibles ou confidentielles.
- Compatibilité descendante : dans certains cas, il peut être nécessaire de modifier la structure d’une table existante. Si cette table est utilisée par de nombreuses requêtes et applications, ces modifications peuvent entraîner de nombreux problèmes. En utilisant des vues pour masquer ces changements, on assure une compatibilité descendante avec les requêtes et applications existantes.
Les différents types de vues SQL
Il existe plusieurs types de vues SQL, selon la manière dont elles sont définies et stockées. Nous allons présenter ici deux exemples : les vues simples et les vues matérialisées.
Vues simples
Une vue simple est créée à partir d’une seule requête SELECT. Elle ne contient pas d’autres éléments que ceux disponibles dans les tables source. Les vues simples sont souvent utilisées pour faciliter l’accès aux données et sécuriser celles-ci.
Exemple de création d’une vue simple :
CREATE VIEW employes_par_departement AS SELECT E.prenom || ' ' || E.nom as nom_prenom, D.nom as departement, E.date_embauche FROM employes E JOIN departements D ON E.id_departement = D.id;
Cette requête crée une vue intitulée « employes_par_departement » qui affiche le nom complet de chaque employé, le département auquel il appartient et sa date d’embauche. La vue est créée à partir de la jointure des tables « employes » et « departements », dont les données sont sources du résultat.
Vues matérialisées
Contrairement aux vues simples, une vue matérialisée stocke physiquement les données issues de la requête SELECT sous-jacente. Cela permet de réduire les temps de réponse pour accéder aux données, en évitant de recalculer le résultat à chaque fois que la vue est sollicitée. Les vues matérialisées sont donc particulièrement adaptées dans les cas où la base de données est volumineuse ou bien lorsque les requêtes sont complexes et gourmandes en ressources.
Exemple de création d’une vue matérialisée :
CREATE MATERIALIZED VIEW total_ventes_ca AS SELECT V.id_employe, E.nom || ' ' || E.prenom as nom_prenom, COUNT(V.id) as nb_ventes, SUM(P.prix * L.quantite) as chiffre_affaires FROM employes E JOIN ventes V ON E.id = V.id_employe JOIN lignes_commandes L ON L.id_vente = V.id JOIN produits P ON P.id = L.id_produit GROUP BY V.id_employe, E.nom, E.prenom;
Cette requête crée une vue matérialisée intitulée « total_ventes_ca » qui affiche le nombre de ventes réalisées par chaque employé ainsi que le chiffre d’affaires associé. La vue est construite à partir des tables « employes », « ventes », « lignes_commandes » et « produits ».
Manipuler les vues : exemple d’utilisations courantes
Maintenant que nous avons étudié la définition des vues SQL et les différentes catégories de vues existantes, passons en revue quelques exemples typiques d’utilisation de ces objets.
Interroger une vue
Pour interroger une vue, on utilise une syntaxe similaire à celle utilisée pour les tables :
SELECT * FROM employes_par_departement WHERE date_embauche > TO_DATE('01/01/2000', 'DD/MM/YYYY');
Cette requête renvoie tous les éléments de la vue où la date d’embauche est postérieure au 1er janvier 2000. Comme on peut le voir, il n’est pas nécessaire de connaître les tables sources ni les détails de leur jointure pour utiliser la vue.
Modifier une vue
Il arrive parfois qu’on souhaite modifier une vue, par exemple pour ajouter une colonne ou changer l’ordre des éléments. Dans ce cas, il suffit de recréer la vue à l’aide de la commande « CREATE OR REPLACE VIEW ». Par exemple :
CREATE OR REPLACE VIEW employes_par_departement AS SELECT E.prenom || ' ' || E.nom as nom_prenom, D.nom as departement, E.date_embauche, EXTRACT(YEAR FROM age(now(), E.date_naissance)) as age FROM employes E JOIN departements D ON E.id_departement = D.id;
Cette demande ajoute une nouvelle colonne « âge » à la vue existante, en calculant l’âge de chaque employé à partir de sa date de naissance.
Supprimer une vue
Pour supprimer une vue, on utilise la commande « DROP VIEW » :
DROP VIEW employes_par_departement;
Cette requête supprime définitivement la vue du schéma de la base de données. Il convient donc d’être prudent lorsqu’on utilise cette commande !
Mettre à jour les vues matérialisées
Comme mentionné précédemment, les vues matérialisées stockent physiquement les données issues de la requête. Pour mettre à jour ces données, on peut utiliser la commande « REFRESH MATERIALIZED VIEW » :
REFRESH MATERIALIZED VIEW total_ventes_ca;
Cette requête actualise les données de la vue « total_ventes_ca » en recalculant les résultats de la requête SELECT sous-jacente.
Franck Dabailly est un rédacteur actif sur le site Pairform.fr, où il contribue régulièrement à des articles liés à la digitalisation des entreprises, aux technologies industrielles, et au marketing numérique. Il écrit notamment sur des sujets variés comme la transformation digitale, les logiciels de gestion. Ses articles sont axés sur l’optimisation des processus commerciaux et la digitalisation dans les secteurs de l’industrie et des services.