Lorsque vous créez une requête, vous devez fournir un effort non négligeable pour la formuler. Avec les vues, vous pouvez sauvegarder votre définition dans une requête SQL sous la forme d’une ‘table virtuelle’ réutilisable.
Objectif de cette leçon : Sauvegarder des requêtes en vues.
Vous pouvez considérer la vue comme une table mais ses données sont issues d’une requête. Faisons un exemple simple:
create view roads_count_v as
select count(people.name), streets.name
from people, streets where people.street_id=streets.id
group by people.street_id, streets.name;
Comme vous pouvez le voir, le seul changement se situe au niveau du début, sur la partie: create view roads_count_v as. Nous pouvons maintenant sélectionner les données depuis cette vue:
select * from roads_count_v;
Résultat:
count | name
-------+-------------
1 | Main Road
2 | High street
1 | Low Street
(3 rows)
Une vue n’est pas fixe et elle ne contient aucune donnée réelle. Cela signifie que vous pouvez facilement la modifier sans impacter les données de votre base de données:
CREATE OR REPLACE VIEW roads_count_v AS
SELECT count(people.name), streets.name
FROM people, streets WHERE people.street_id=streets.id
GROUP BY people.street_id, streets.name
ORDER BY streets.name;
(Cet exemple montre également la convention de bonne pratique d’utiliser les caractères MAJUSCULES pour les mot-clefs du SQL.)
Vous pouvez voir que nous avons ajouté une clause ORDER BY de manière à trier les lignes:
select * from roads_count_v;
count | name
-------+-------------
2 | High street
1 | Low Street
1 | Main Road
(3 rows)
Si vous n’avez plus besoin de la vue, vous pouvez la supprimer de cette manière:
drop view roads_count_v;
En utilisant des vues, vous pouvez sauvegarder une requête et accéder à ses résultats comme s’il s’agissait d’une table.
Parfois, lorsque vous changez une donnée, vous voulez que ces modifications entraînent des effets ailleurs dans la base de données. La prochaine leçon nous permettra de voir comment on peut y parvenir.