CREATE OR REPLACE VIEW V_Nombre_espece
AS SELECT Espece.id, COUNT(Animal.id) AS nb
FROM Espece
LEFT JOIN Animal ON Animal.espece_id = Espece.id
GROUP BY Espece.id;
Exemple 3 : vue sur une vue.
La vue V_Chien sélectionne les chiens. Créons la vue V_Chien_race qui sélectionne les chiens dont on connaît la race. On peut
bien sûr créer cette vue à partir de la table Animal, mais on peut aussi repartir simplement de la vue V_Chien.
Code : SQL
CREATE OR REPLACE VIEW V_Chien_race
AS SELECT id, sexe, date_naissance, nom, commentaires, espece_id,
race_id, mere_id, pere_id, disponible
FROM V_Chien
WHERE race_id IS NOT NULL;
Exemple 4 : expression dans une vue.
Voici un exemple de vue définie par une requête contenant une expression, qui sélectionne les espèces, avec leur prix en dollars.
Code : SQL
CREATE VIEW V_Espece_dollars
AS SELECT id, nom_courant, nom_latin, description,
ROUND(prix*1.31564, 2) AS prix_dollars
FROM Espece;
La requête SELECT est "figée"
La requête SELECT définissant une vue est figée : les changements de structure faits par la suite sur la ou les tables sousjacentes n'influent pas sur la vue.
Par exemple, si l'on crée une vue V_Client toute simple.
Code : SQL
CREATE VIEW V_Client
AS SELECT *
FROM Client;
Cette vue sélectionne les huit colonnes de Client (id, nom, prenom, adresse, code_postal, ville, pays, email). Une fois cette vue
créée, elle est figée, et l'ajout d'une colonne dans la table Client ne changera pas les résultats d'une requête sur V_Client. Cette
vue ne sélectionnera jamais que id, nom, prenom, adresse, code_postal, ville, pays et email, malgré le caractère * dans la clause
SELECT. Pour que V_Client sélectionne la nouvelle colonne de Client, il faudrait recréer la vue pour l'inclure.
Exemple : ajout d'une colonne date_naissance à la table Client.
Code : SQL
ALTER TABLE Client ADD COLUMN date_naissance DATE;
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
336/414
www.openclassrooms.com
AS SELECT Espece.id, COUNT(Animal.id) AS nb
FROM Espece
LEFT JOIN Animal ON Animal.espece_id = Espece.id
GROUP BY Espece.id;
Exemple 3 : vue sur une vue.
La vue V_Chien sélectionne les chiens. Créons la vue V_Chien_race qui sélectionne les chiens dont on connaît la race. On peut
bien sûr créer cette vue à partir de la table Animal, mais on peut aussi repartir simplement de la vue V_Chien.
Code : SQL
CREATE OR REPLACE VIEW V_Chien_race
AS SELECT id, sexe, date_naissance, nom, commentaires, espece_id,
race_id, mere_id, pere_id, disponible
FROM V_Chien
WHERE race_id IS NOT NULL;
Exemple 4 : expression dans une vue.
Voici un exemple de vue définie par une requête contenant une expression, qui sélectionne les espèces, avec leur prix en dollars.
Code : SQL
CREATE VIEW V_Espece_dollars
AS SELECT id, nom_courant, nom_latin, description,
ROUND(prix*1.31564, 2) AS prix_dollars
FROM Espece;
La requête SELECT est "figée"
La requête SELECT définissant une vue est figée : les changements de structure faits par la suite sur la ou les tables sousjacentes n'influent pas sur la vue.
Par exemple, si l'on crée une vue V_Client toute simple.
Code : SQL
CREATE VIEW V_Client
AS SELECT *
FROM Client;
Cette vue sélectionne les huit colonnes de Client (id, nom, prenom, adresse, code_postal, ville, pays, email). Une fois cette vue
créée, elle est figée, et l'ajout d'une colonne dans la table Client ne changera pas les résultats d'une requête sur V_Client. Cette
vue ne sélectionnera jamais que id, nom, prenom, adresse, code_postal, ville, pays et email, malgré le caractère * dans la clause
SELECT. Pour que V_Client sélectionne la nouvelle colonne de Client, il faudrait recréer la vue pour l'inclure.
Exemple : ajout d'une colonne date_naissance à la table Client.
Code : SQL
ALTER TABLE Client ADD COLUMN date_naissance DATE;
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
336/414
www.openclassrooms.com
