Les vues
Comprendre et utiliser les vues dans une base de données relationnelle
Notions théoriques
Une vue (ou view en anglais) est une table virtuelle dans une base de données.
Une vue permet de sauvegarder une requête SQL sous forme d'objet, que l'on peut interroger comme une table classique.
Les vues sont souvent utilisées pour simplifier des requêtes complexes, sécuriser l'accès aux données ou créer des abstractions sur les données.
Les vues ne stockent pas les données elles-mêmes, mais une requête. Cela signifie qu'une vue est toujours à jour par rapport aux données des tables qu'elle interroge.
Pourquoi utiliser une vue ?
- Simplifier les requêtes complexes : une requête complexe peut être encapsulée dans une vue, et utilisée comme une table simple.
- Sécuriser l’accès aux données : une vue peut exposer uniquement certaines colonnes ou lignes d’une table, selon des règles définies.
- Réutiliser une requête : une vue peut être utilisée plusieurs fois sans avoir à réécrire la requête.
- Améliorer la lisibilité du code SQL : les vues permettent de nommer des requêtes complexes et de les rendre plus compréhensibles.
Création d'une vue
Pour créer une vue, on utilise la commande :
CREATE VIEW nom_vue AS
SELECT colonne1, colonne2
FROM table
WHERE condition;
Cela crée une vue appelée nom_vue
qui contient les résultats de la requête spécifiée.
Exemple : Vue simple
CREATE VIEW employes_actifs AS
SELECT nom, prenom, poste
FROM employes
WHERE statut = 'actif';
Cette vue permet d’obtenir uniquement les employés actifs.
Consultation d'une vue
Une fois la vue créée, on peut l’interroger comme une table :
SELECT * FROM employes_actifs;
Mise à jour d'une vue
Certaines vues peuvent être modifiables, c’est-à-dire qu’on peut faire des INSERT
, UPDATE
ou DELETE
dessus, si elles respectent certaines règles (pas de GROUP BY
, pas de DISTINCT
, etc.).
Suppression d'une vue
Pour supprimer une vue :
DROP VIEW nom_vue;
Exemple pratique
Il est possible de créer une base de données pour une entreprise avec une table
employes
, puis d’y créer une vue pour filtrer les employés actifs.
Étape 1 : Créer la base et la table
CREATE DATABASE entreprise;
USE entreprise;
CREATE TABLE employes (
id INT PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(50),
prenom VARCHAR(50),
poste VARCHAR(50),
statut VARCHAR(20)
);
Étape 2 : Insérer des données
INSERT INTO employes (nom, prenom, poste, statut) VALUES
('Durand', 'Alice', 'Développeur', 'actif'),
('Martin', 'Paul', 'Technicien', 'inactif'),
('Lemoine', 'Sophie', 'Chef de projet', 'actif');
Étape 3 : Créer une vue
CREATE VIEW vue_employes_actifs AS
SELECT nom, prenom, poste
FROM employes
WHERE statut = 'actif';
Étape 4 : Consulter la vue
SELECT * FROM vue_employes_actifs;
Résultat :
nom | prenom | poste |
---|---|---|
Durand | Alice | Développeur |
Lemoine | Sophie | Chef de projet |
Étape 5 : Supprimer la vue
DROP VIEW vue_employes_actifs;
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Le but de ce TP est de manipuler des vues SQL dans une base de données existante.
Nous allons travailler sur une base de données appelée
bibliotheque
, contenant des tables sur des auteurs, des éditeurs, des livres, des emprunteurs et des emprunts.
Commencer par télécharger et importer le fichier SQL suivant dans MariaDB :
👉 Télécharger le fichier 'cdi.sql' - Télécharger le MCD
Étape 1 : Créer la base de données
Créer une base de données bibliotheque
et importer le fichier cdi.sql
pour créer toutes les tables et insérer les données.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 2 : Créer une vue affichant les livres de plus de 300 pages
Créer une vue livres_long
qui affiche les titres, auteurs et nombre de pages des livres ayant plus de 300 pages.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 3 : Créer une vue listant les livres empruntés mais non rendus
Créer une vue livres_non_rendus
qui affiche le titre du livre, le nom de l’emprunteur et la date de prêt pour tous les emprunts dont la date de rendu est NULL.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 4 : Créer une vue listant les auteurs ayant écrit des romans
Créer une vue auteurs_romans
qui affiche le nom et prénom des auteurs ayant au moins un livre dont le thème est "Roman".
Une solution
Vous devez être connecté pour voir le contenu.
Étape 5 : Créer une vue listant les éditeurs ayant publié des livres de plus de 10€
Créer une vue editeurs_livres_chers
qui affiche le nom de l’éditeur et le titre des livres dont le prix est supérieur à 10€.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 6 : Créer une vue affichant les emprunteurs ayant emprunté au moins un livre de Jules Verne
Créer une vue emprunteurs_verne
qui affiche le nom et prénom des emprunteurs ayant emprunté un livre écrit par Jules Verne.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 7 : Tester toutes les vues avec des requêtes SELECT
Exécuter une requête SELECT *
sur chaque vue pour vérifier que les résultats sont corrects.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 8 : Supprimer toutes les vues créées
Une fois les tests terminés, supprimer toutes les vues créées pour nettoyer la base.
Une solution
Vous devez être connecté pour voir le contenu.