Les vues SQL : une introduction aux requêtes avancées

Actualité

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.
Lire :  Le schiste vert : une roche métamorphique fascinante

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 ».

Lire :  Le schiste bleu : une roche unique

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.

Laisser un commentaire