MySQL 5 : Les vues — (part 2/7)
Syntaxe d’une vue
CREATE VIEW
La commande MySQL pour créer une vue est assez proche de la syntaxe du standard SQL.
CREATE VIEW nom_de_la_vue AS requête_select
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 v_etudiant_liste AS SELECT nom, prenom FROM etudiant;
Après avoir créé la table etudiant, on crée la vue v_etudiant_liste 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:
CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW nom_de_la_vue [(colonne(s))]
AS requête_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
Voici dans le détail les différentes clauses.
OR REPLACE
Si une vue du même nom existe, elle est alors supprimée et remplacée par la nouvelle.
ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}
Clause non standard, qui prend les valeurs suivantes:
- UNDEFINED : C’est la valeur par défaut. MySQL décide lui-même quel algorithme choisir entre MERGE et TEMPTABLE.
- MERGE : utilise la requête SQL ayant servie à la création de la vue comme base d’opération. En d’autres termes, faire une requête sur la vue revient à faire la même requête sur la ou les tables sous-jacentes.
- TEMPTABLE : utilise une table temporaire créée pour stocker (temporairement) les résultats. Un intérêt de cet algorithme est de libérer plus rapidement les verrous sur les tables sous-jacentes. Les autres requêtes sont alors moins pénalisées.
Il faut noter également qu’une vue avec pour valeur MERGE sera modifiable alors qu’avec la valeur TEMPTABLE elle ne le sera pas.
DEFINER = { user | CURRENT_USER }
Clause non standard qui permet d’assigner un créateur à la vue. Par défaut, le créateur de la vue est DEFINER = current_user, c’est-à-dire, l’utilisateur qui exécute la commande CREATE VIEW. Il est cependant possible d’assigner la vue à un autre compte utilisateur, à condition d’avoir le droit SUPER.
SQL SECURITY { DEFINER | INVOKER }
Clause non standard qui permet de définir quels seront les droits de l’utilisateur, lors de l’exécution de la vue. Deux valeurs sont possibles:
- DEFINER qui permet d’exécuter la vue avec les droits du créateur. C’est la valeur par défaut.
- INVOKER qui permet d’exécuter la vue avec ses propres droits.
WITH [CASCADED | LOCAL] CHECK OPTION
Permet de vérifier les contraintes spécifiées dans la clause WHERE d’une vue modifiable lorsque l’on y modifie ses données. Deux valeurs sont possibles:
- CASCADED, la valeur par défaut. Elle permet de vérifier la contrainte pour la vue ainsi que pour les vues sous-jacentes dont elle dérive.
- LOCAL qui permet de vérifier seulement la contrainte de la vue.
ALTER VIEW
Une fois la vue créée, il est bien évidement possible de la modifier avec la commande ALTER VIEW.
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.
DROP VIEW
Permet d’effacer une vue.
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.
(à suivre… les restrictions pour créer une vue)
Architecte Solution Cloud chez Oracle
MySQL Geek, Architecte, DBA, Consultant, Formateur, Auteur, Blogueur et Conférencier.
—–
Blog: www.dasini.net/blog/en/
Twitter: https://twitter.com/freshdaz
SlideShare: www.slideshare.net/freshdaz
Youtube: https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
—–
[…] (à suivre… syntaxe d’une vue) […]
[…] (<- précédent) […]