Les vues sont des tables virtuelles issues de l'assemblage d'autres tables en fonction de critères. Elles permettent de rendre accessible le retour d'une requête et de l'utiliser.
Techniquement les vues sont créées à l'aide d'une requête SELECT. Elles ne stockent pas les données qu'elles contiennent mais conservent juste la requête permettant de les créer.
La requête SELECT qui génère la vue référence une ou plusieurs tables. La vue peut donc être, par exemple, une jointure entre différentes tables, l'agrégation ou l'extraction de certaines colonnes d'une table. Elle peut également être créée à partir d'une autre vue.
Les vues peuvent être utilisées pour différentes raisons. Elles permettent de :
Pour créer une vue l'utilisateur doit avoir le droit CREATE VIEW. Il faut également avoir la permission de sélectionner toutes les colonnes qui apparaissent dans la commande SELECT spécifiant ce qu'est la vue.
De plus si la clause REPLACE est utilisée, le droit DROP est également nécessaire.
Le droit SHOW VIEW donne la possibilité d'exécuter la commande SHOW CREATE VIEW. Cette commande permet d'obtenir les informations de création d'une vue. Une autre façon d'obtenir ces informations est d'interroger la table view du schéma information_schema. Cette information sera exhaustive seulement pour les vues que vous avez créé.
Accorder les droits sur une vue pour un utilisateur :
GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON `projet`.* TO 'secretaire'@'localhost';
La commande MySQL pour créer une vue est assez proche de la syntaxe du standard SQL. Syntaxe de création d'une vue sous MySQL
CREATE VIEW nom_de_la_vue AS requête_select
Création d'une vue pour la relation “etudiant” :
CREATE TABLE etudiant
(
id_etudiant INT UNSIGNED PRIMARY KEY,
nom CHAR(30),
prenom CHAR(30),
age TINYINT UNSIGNED,
cursus ENUM('Licence', 'Master', 'Doctorat')
);
CREATE VIEW vEtudiantListe AS SELECT nom, prenom FROM etudiant;
Après avoir créé la table etudiant, on crée la vue vEtudiantListe qui contient le nom et le prénom des étudiants.
Il est possible d'ajouter d'autres informations lors de la création de la vue, vous consulterez la documentation officielle MySQL pour les découvrir.
Une fois la vue créée, il est bien évidement possible de la modifier avec la commande ALTER VIEW.
Editer une vue à l'ordre ALTER :
ALTER definer='secretaire'@'localhost' VIEW v_etudiant_liste AS SELECT nom, prenom, cursus FROM etudiant;
Cette commande modifie la clause DEFINER en lui assignant le compte secretaire@localhost et modifie la définition de la vue en rajoutant le champ cursus.
L'ordre DROP VIEW permet d'effacer une vue.
Supprimer des vues à partir de l'ordre DROP VIEW :
DROP VIEW v_etudiant_liste, v_prof_liste;
Supprime les vues v_etudiant_liste et v_prof_liste. Il est possible d'ajouter la clause IF EXISTS qui retourne un avertissement au lieu d'une erreur si la vue à effacer n'existe pas.
Lors de la création d'une vue, certaines contraintes doivent être prises en compte :