Aller au contenu principal

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.

astuce

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.

attention

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 :

nomprenomposte
DurandAliceDéveloppeur
LemoineSophieChef de projet

Étape 5 : Supprimer la vue

DROP VIEW vue_employes_actifs;

Test de mémorisation/compréhension


Quel mot-clé permet de créer une vue en SQL ?


Une vue est :


Quelle commande permet de supprimer une vue ?


Une vue peut-elle contenir des données différentes de la table source ?


Quel est l'intérêt principal d'une vue ?


Une vue peut-elle être modifiée par une requête UPDATE ?


Quelle est la bonne syntaxe pour consulter une vue ?


Une vue peut-elle contenir une clause WHERE ?


Que se passe-t-il si les données de la table changent ?


Les vues permettent-elles de limiter l’accès à certaines colonnes ?



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

É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

É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

É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

É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

É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

É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

É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