Partie I
SQL de base
176
© Éditions Eyrolles
Dans certains cas, la définition d’une vue temporaire est nécessaire pour écrire une requête
qu’il ne serait pas possible de construire à partir des tables seules. Attribuées comme des privilèges (GRANT), les vues améliorent la sécurité des informations stockées.
Création d’une vue (CREATE VIEW)
Pour pouvoir créer une vue dans une base, vous devez posséder le privilège CREATE VIEW et
les privilèges en SELECT des tables présentes dans la requête de définition de la vue. La
syntaxe SQL de création d’une vue est la suivante :
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW [nomBase.]nomVue [(listecolonnes)]
AS requêteSELECT
[WITH [CASCADED | LOCAL] CHECK OPTION];
q
OR REPLACE remplace la vue par la nouvelle définition, même si elle existait déjà (évite
de détruire la vue avant de la recréer). Vous devez avoir le privilège DELETE sur la base
pour bénéficier de cette directive.
q
ALGORITHM=MERGE : la définition de la vue et sa requête sont fusionnées en interne.
q
ALGORITHM=TEMPTABLE : les résultats sont extraits dans une table temporaire (TEMPORARY) qui est utilisée par la suite. Intéressant si les tables source sont sujettes à de nombreux
verrous qui ne gênent plus la manipulation de la vue utilisant, elle, une table temporaire.
q
Aucune option ou ALGORITHM=UNDEFINED : MySQL choisit la politique à adopter,
souvent en faveur de MERGE, la seule qui convient aux vues modifiables.
q
nomBase désigne le nom de la base de données qui hébergera la vue. En l’absence de ce
paramètre, la vue est créée dans la base en cours d’utilisation.
q
requêteSELECT : requête de définition interrogeant une (ou des) table(s) ou vue(s) pour
charger les données dans la vue.
• La requête de définition ne peut interroger une table temporaire, ni contenir de paramètres
ou de variables de session.
• Si la requête de définition sélectionne toutes les colonnes d’un objet source (SELECT *
FROM…), et si des colonnes sont ajoutées par la suite à cet objet, la vue ne contiendra pas
ces colonnes définies ultérieurement à elle. Il faudra recréer la vue pour prendre en compte
l’évolution structurelle de l’objet source.
q
WITH CHECK OPTION garantit que toute mise à jour de la vue par INSERT ou UPDATE
s’effectuera conformément au prédicat contenu dans la requête de définition.
q
Les paramètres LOCAL et CASCADED (par défaut) determinent la portée de la vérification
quand une vue est définie à partir d’une autre vue. LOCAL restreint la vérification du prédicat à la vue elle-même. CASCADED permet d’étendre éventuellement les vérifications aux
autres vues source de la vue qui vient d’être définie.
Précédent

- 198/418

Suivant