Doublons interdits
Comme pour une table, il est impossible que deux colonnes ayant le même nom cohabitent dans une même vue.
Code : SQL
CREATE VIEW V_test
AS SELECT Animal.id, Espece.id
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id;
Code : Console
ERROR 1060 (42S21): Duplicate column name 'id'
Pour pouvoir créer cette vue, il est nécessaire de renommer une des deux colonnes dans la vue (soit avec un alias, soit en listant
les colonnes juste après CREATE VIEW nom_vue).
Requête SELECT stockée dans la vue
Que peut-on mettre dans la requête SELECT qui sert à définir la vue ?
La requête définissant une vue peut être n'importe quelle requête SELECT, à quelques exceptions près.
Il n'est pas possible d'utiliser une requête SELECT dont la clause FROM contient une sous-requête SELECT.
La requête ne peut pas faire référence à des variables utilisateur, des variables système, ni même des variables locales
(dans le cas d'une vue définie par une procédure stockée).
Toutes les tables (ou vues) mentionnées dans la requête doivent exister (au moment de la création du moins).
En dehors de ça, carte blanche ! La requête peut contenir une clause WHERE, une clause GROUP BY, des fonctions (scalaires ou
d’agrégation), des opérations mathématiques, une autre vue, des jointures, etc.
Exemple 1 : une vue pour les chiens.
L'employé de l'élevage préposé aux chiens peut créer une vue sur ceux-ci, afin de ne pas devoir ajouter une clause WHERE
espece_id = 1 à chacune de ses requêtes.
Code : SQL
CREATE VIEW V_Chien
AS SELECT id, sexe, date_naissance, nom, commentaires, espece_id,
race_id, mere_id, pere_id, disponible
FROM Animal
WHERE espece_id = 1;
Exemple 2 : combien de chats possédons-nous ?
Il est tout à fait possible de créer une vue définie par une requête qui compte le nombre d'animaux de chaque espèce que l'on
possède.
Code : SQL
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
335/414
www.openclassrooms.com
Précédent

- 335/413

Suivant