Vues (Views)¶
En SQL, les vues permettent d'enregistrer une requête fréquemment utilisée pour la réutiliser aisément dans d'autres requêtes. Une vue agit comme une requête stockée et nommée, accessible comme une table virtuelle.
Avantages de créer une vue¶
- Simplification des requêtes : Les vues permettent de réduire la complexité des requêtes en masquant les détails de la jointure et des calculs.
- Sécurisation des données : Les vues peuvent limiter l'accès à certaines données, ce qui est utile pour protéger les informations sensibles.
- Facilitation de la maintenance : Les modifications apportées à une vue se répercutent sur toutes les requêtes qui l'utilisent, simplifiant ainsi la maintenance.
Il est important de noter que les vues ne sont pas un moyen d'optimiser les performances des requêtes. Lorsqu'une vue est utilisée dans une requête, la requête sous-jacente de la vue est exécutée en premier, suivie de la requête principale.
Créer une vue¶
Pour créer une vue, utilisez la syntaxe suivante :
- CREATE [OR REPLACE] : Si la vue existe déjà,
OR REPLACEpermet de la remplacer. - [nom_bd.]nom_view : Le nom de la vue doit être unique dans la base de données.
- [(liste_colonne)] : Les noms des colonnes de la vue peuvent être spécifiés; sinon, ils seront dérivés de la requête SELECT.
- requête_select : La requête SELECT peut interroger des tables et d'autres vues.
Exemple¶
CREATE OR REPLACE VIEW etudiants_informatique (nom_complet, da)
AS
SELECT CONCAT(e.nom, ', ', e.prenom) AS nom_complet,
e.da
FROM etudiants e
JOIN etudiants_concentration ec ON ec.etudiant_id = e.id
JOIN concentrations c ON c.id = ec.concentration
WHERE c.description = 'Technique informatique';
Utilisation de la vue :
Modifier une vue¶
Pour modifier une vue, utilisez CREATE OR REPLACE VIEW ou ALTER VIEW. Les deux commandes modifient la vue existante :
Note
Le nom de la vue ne peut pas être modifié directement par ALTER VIEW. Pour renommer une vue, utilisez :
Supprimer une vue¶
Pour supprimer une vue :
L'option IF EXISTS permet d'éviter une erreur si la vue spécifiée n'existe pas.
Source