134
Chapitre 6 • SQL avancé
6.2.1 Principe et objectif des vues
Une vue correspond à une table virtuelle dont seule la définition, sous la forme
d’une requête SFW, est stockée et non le contenu. Une requête SQL peut extraire des
données de tables réelles (stockées dans la base) ou virtuelles (vues). Il est même
possible sous certaines conditions de modifier les données d’une vue (c’est-à-dire
d’ajouter, supprimer, modifier des lignes). Dans ce cas le SGBD répercute sur les
données réelles les modifications demandées. D’une manière générale on considérera qu’une vue peut être utilisée comme une table réelle.
6.2.2 Définition et utilisation d’une vue
Une vue est définie par une requête SQL qui spécifie son nom, celui de ses colonnes
et la requête SFW qui calcule ses lignes 2 :
create view COM_COMPLETE(NCOM,NCLI,NOMCLI,LOC,DATECOM)
as select NCOM,COM.NCLI,NOM,LOCALITE,DATECOM
from
CLIENT CLI,COMMANDE COM
where COM.NCLI = CLI.NCLI
La vue COM_COMPLETE peut être utilisée comme une table ordinaire. Les
requêtes suivantes sont dès lors tout à fait valides :
select NOMCLI,NCOM,DATECOM
from
COM_COMPLETE
where LOC = 'Toulouse'
select NPRO
from
DETAIL
where NCOM in ( select NCOM
from
COM_COMPLETE
where LOC = 'Toulouse')
select LOC, count(*)
from
COM_COMPLETE CC, DETAIL D
where CC.NCOM = D.NCOM
group by LOC
Lorsqu’une requête utilise une vue, le SGBD reformule cette requête en y remplaçant les éléments de la vue par leur définition, puis l’exécute 3 . C’est ainsi que la
première requête est d’abord reformulée comme suit, avant d’être exécutée :
select NOM,NCOM,DATECOM
from
CLIENT CLI,COMMANDE COM
where COM.NCLI = CLI.NCLI
and
LOC = 'Toulouse'
2. La notion de vue n’existe pas en MS Access, mais le nom d’un objet requête de type SFW peut
apparaître dans la clause from d’une autre requête.
3. La réalité est un peu plus complexe, mais ce modèle est suffisant pour nos besoins.
Chapitre 6 • SQL avancé
6.2.1 Principe et objectif des vues
Une vue correspond à une table virtuelle dont seule la définition, sous la forme
d’une requête SFW, est stockée et non le contenu. Une requête SQL peut extraire des
données de tables réelles (stockées dans la base) ou virtuelles (vues). Il est même
possible sous certaines conditions de modifier les données d’une vue (c’est-à-dire
d’ajouter, supprimer, modifier des lignes). Dans ce cas le SGBD répercute sur les
données réelles les modifications demandées. D’une manière générale on considérera qu’une vue peut être utilisée comme une table réelle.
6.2.2 Définition et utilisation d’une vue
Une vue est définie par une requête SQL qui spécifie son nom, celui de ses colonnes
et la requête SFW qui calcule ses lignes 2 :
create view COM_COMPLETE(NCOM,NCLI,NOMCLI,LOC,DATECOM)
as select NCOM,COM.NCLI,NOM,LOCALITE,DATECOM
from
CLIENT CLI,COMMANDE COM
where COM.NCLI = CLI.NCLI
La vue COM_COMPLETE peut être utilisée comme une table ordinaire. Les
requêtes suivantes sont dès lors tout à fait valides :
select NOMCLI,NCOM,DATECOM
from
COM_COMPLETE
where LOC = 'Toulouse'
select NPRO
from
DETAIL
where NCOM in ( select NCOM
from
COM_COMPLETE
where LOC = 'Toulouse')
select LOC, count(*)
from
COM_COMPLETE CC, DETAIL D
where CC.NCOM = D.NCOM
group by LOC
Lorsqu’une requête utilise une vue, le SGBD reformule cette requête en y remplaçant les éléments de la vue par leur définition, puis l’exécute 3 . C’est ainsi que la
première requête est d’abord reformulée comme suit, avant d’être exécutée :
select NOM,NCOM,DATECOM
from
CLIENT CLI,COMMANDE COM
where COM.NCLI = CLI.NCLI
and
LOC = 'Toulouse'
2. La notion de vue n’existe pas en MS Access, mais le nom d’un objet requête de type SFW peut
apparaître dans la clause from d’une autre requête.
3. La réalité est un peu plus complexe, mais ce modèle est suffisant pour nos besoins.
