150
Chapitre 6 • SQL avancé
Figure 6.2 - Deux tables du catalogue représentant les identifiants primaires, les clés
étrangères, leurs composants et leurs relations
c) Utilisation du catalogue
Il apparaît immédiatement que le contenu des tables du catalogue ne peut être
modifié comme pourrait l'être celui des tables ordinaires. En effet, toute modification intempestive de ces données entraînerait de graves conséquence sur le fonctionnement de la base de données. Par exemple, supprimer une ligne de la table
SYS_TABLE rend inaccessible la table que cette ligne décrit. En principe, le
contenu des tables du catalogue ne peut être modifié que par le système de gestion
lui-même lorsqu'il exécute une requête telle que create table, create index,
drop table, alter table, create view, grant, revoke, etc. En revanche, ces
données peuvent être consultées par tout utilisateur qui en a reçu l'autorisation.
Nous donnerons ci-après quelques exemples de requêtes représentatives. D’autres
traitements, plus complexes, seront décrits en 7.5.4.
• Quelles sont les colonnes de la table DETAIL ?
select CNAME, CTYPE, LEN1, NULLS
from
SYS_COLUMN
where
TNAME = 'DETAIL'
• Dans quelles tables de base existe-t-il des colonnes dont le nom commence par
'NCOM' ?
select TNAME
from
SYS_TABLE
where TNAME in (select TNAME
from
SYS_COLUMN
where CNAME like 'NCOM%')
and
TTYPE = 'R'
CNAME
CTYPE
LEN1
NULLS
NCOM
NPRO
QCOM
CHAR
CHAR
DECIMAL
12
15
8
N
N
N
Chapitre 6 • SQL avancé
Figure 6.2 - Deux tables du catalogue représentant les identifiants primaires, les clés
étrangères, leurs composants et leurs relations
c) Utilisation du catalogue
Il apparaît immédiatement que le contenu des tables du catalogue ne peut être
modifié comme pourrait l'être celui des tables ordinaires. En effet, toute modification intempestive de ces données entraînerait de graves conséquence sur le fonctionnement de la base de données. Par exemple, supprimer une ligne de la table
SYS_TABLE rend inaccessible la table que cette ligne décrit. En principe, le
contenu des tables du catalogue ne peut être modifié que par le système de gestion
lui-même lorsqu'il exécute une requête telle que create table, create index,
drop table, alter table, create view, grant, revoke, etc. En revanche, ces
données peuvent être consultées par tout utilisateur qui en a reçu l'autorisation.
Nous donnerons ci-après quelques exemples de requêtes représentatives. D’autres
traitements, plus complexes, seront décrits en 7.5.4.
• Quelles sont les colonnes de la table DETAIL ?
select CNAME, CTYPE, LEN1, NULLS
from
SYS_COLUMN
where
TNAME = 'DETAIL'
• Dans quelles tables de base existe-t-il des colonnes dont le nom commence par
'NCOM' ?
select TNAME
from
SYS_TABLE
where TNAME in (select TNAME
from
SYS_COLUMN
where CNAME like 'NCOM%')
and
TTYPE = 'R'
CNAME
CTYPE
LEN1
NULLS
NCOM
NPRO
QCOM
CHAR
CHAR
DECIMAL
12
15
8
N
N
N
