AS requete_select;
La clause OR REPLACE est facultative. Si elle est fournie, la vue nom_vue sera soit créée si elle n'existe pas, soit remplacée si
elle existait déjà. Si OR REPLACE est omise et qu'une vue portant le même nom a été précédemment définie, cela déclenchera
une erreur.
Donc, si l'on reprend la requête précédente, voici comment créer une vue pour stocker celle-ci :
Code : SQL
CREATE VIEW V_Animal_details
AS SELECT Animal.id, Animal.sexe, Animal.date_naissance, Animal.nom,
Animal.commentaires,
Animal.espece_id, Animal.race_id, Animal.mere_id,
Animal.pere_id, Animal.disponible,
Espece.nom_courant AS espece_nom, Race.nom AS race_nom
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
LEFT JOIN Race ON Animal.race_id = Race.id;
Dorénavant, plus besoin de retaper cette requête, il suffit de travailler à partir de la vue, comme s'il s'agissait d'une table :
Code : SQL
SELECT * FROM V_Animal_details;
J'ai préfixé le nom de la vue par "V_". Il s'agit d'une convention que je vous conseille fortement de respecter. Cela
permet de savoir au premier coup d’œil si l'on travaille avec une vraie table, ou avec une vue.
D'ailleurs, si l'on demande la liste des tables de la base de données, on peut voir que la vue est reprise (bien qu'il ne s'agit pas
d'une table, mais d'une requête SELECT stockée, j'insiste).
Code : SQL
SHOW TABLES;
Tables_in_elevage
Adoption
Animal
Animal_histo
Client
Erreur
Espece
Race
V_Animal_details
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
333/414
www.openclassrooms.com
La clause OR REPLACE est facultative. Si elle est fournie, la vue nom_vue sera soit créée si elle n'existe pas, soit remplacée si
elle existait déjà. Si OR REPLACE est omise et qu'une vue portant le même nom a été précédemment définie, cela déclenchera
une erreur.
Donc, si l'on reprend la requête précédente, voici comment créer une vue pour stocker celle-ci :
Code : SQL
CREATE VIEW V_Animal_details
AS SELECT Animal.id, Animal.sexe, Animal.date_naissance, Animal.nom,
Animal.commentaires,
Animal.espece_id, Animal.race_id, Animal.mere_id,
Animal.pere_id, Animal.disponible,
Espece.nom_courant AS espece_nom, Race.nom AS race_nom
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
LEFT JOIN Race ON Animal.race_id = Race.id;
Dorénavant, plus besoin de retaper cette requête, il suffit de travailler à partir de la vue, comme s'il s'agissait d'une table :
Code : SQL
SELECT * FROM V_Animal_details;
J'ai préfixé le nom de la vue par "V_". Il s'agit d'une convention que je vous conseille fortement de respecter. Cela
permet de savoir au premier coup d’œil si l'on travaille avec une vraie table, ou avec une vue.
D'ailleurs, si l'on demande la liste des tables de la base de données, on peut voir que la vue est reprise (bien qu'il ne s'agit pas
d'une table, mais d'une requête SELECT stockée, j'insiste).
Code : SQL
SHOW TABLES;
Tables_in_elevage
Adoption
Animal
Animal_histo
Client
Erreur
Espece
Race
V_Animal_details
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
333/414
www.openclassrooms.com
