Home
perf
la Pres.
technique
| |
Interrogation des objets
2.3.1.
La clause SELECT monotable.
2.3.2.
La clause SELECT multitable.

De nouvelles
fonctionnalités ont été offertes grâce à la modification du langage SQL
d'interrogation des bases de données relationnelles.
Voyons les clauses existant pour cette interrogation.

2.3.1. La clause SELECT monotable.
Il s'agit de la clause SELECT classique telle qu'utilisée en relationnel.
SELECT [DISTINCT] {Champ}* FROM Table [WHERE
Cond] [ORDER BY Critère {ASC | DESC}] [GROUP BY
Groupe]
DISTINCT |
sert à éliminer les occurences multiples de l'ensemble des résultats |
WHERE Cond |
spécifie la condition pour qu'un enregistrement figure dans
l'ensemble des solutions |
ORDER BY Critère |
permet de trier les réponses (ASC : tri ascendant, DESC
: tri descendant) |
GROUP BY Groupe |
permet de regrouper les réponses selon un champ qu'elles ont en
commun |
{Champ}* peut etre remplace par une fonction mathématique de Champ telle que :
 | COUNT : renvoie le nombre de réponses
 | AVG : renvoie la moyenne des réponses
 | SUM : renvoie la somme des réponses
 | MAX : renvoie le maximum des réponses
 | MIN : renvoie le minimum des réponses |
| | | |

2.3.2. La clause SELECT
multitable.
Alors que l'opération de SELECT multitable reposait le plus souvent dans les
SGBD relationnelles sur la jointure par comparaison d'une clé primaire avec une
clé étrangère, en objet-relationnel les pointeurs pourront remplacer cette clé
étrangère. La jointure est ainsi rendue implicite.
Soient les tables suivantes représentant les relations entre des PC et leur
administrateur.
nserie |
adresseIP |
@administre |
P1 |
193.54.227.59 |
REF(1) |
P2 |
193.54.227.200 |
REF(1) |
P3 |
193.54.207.100 |
REF(2) |
P4 |
130.40.120.20 |
REF(1) |
NB : Dans le champ @administre, REF(1) devrait en fait être une flèche vers
l'objet numéro 1 de la table des administrateurs.
nadmin |
age |
nom |
A1 |
45 |
Jacques Faure |
A2 |
50 |
Daniel Vielle |
 | Quels sont les numéros de série et les adresses IP des PC
administrés par Jacques Faure ? |
Q : SELECT p.nserie "PC", p.adresseIP "Adresse IP"
FROM PC p
WHERE p.administre.nom = 'Jacques Faure';
R :
PC |
Adresse IP |
P1 |
193.54.227.59 |
P2 |
193.54.227.200 |
P4 |
130.40.120.20 |
Note
sur les tables imbriquées : il est difficile d'extraire des objets qui
proviennent de plusieurs tables imbriquées avec une seule requête SELECT. La
documentation d'Oracle 8 mentionne la notion de curseur imbriqué qui permet de
sélectionner plusieurs objets avec leur tables imbriquées associées. Cette
technique n'est pas encore au point sous l'interface SQL*Plus de Windows
(allez savoir pourquoi...). En revanche, elle tourne sous SQL*Plus de Unix.
 | Fonction VALUE() : |
Cette fonction s'applique à tout type et renvoie en particulier la valeur des
pointeurs. Il s'agit en fait des OID des objets correspondants.
 | Fonction DEREF() : |
Elle s'applique à un pointeur et renvoie le contenu du type référencé par ce
pointeur.
 | Quels sont les administrateurs qui ont en charge des PC dont
l'adresse IP commence par 193.54 ? |
Q : SELECT DEREF(p.administre)
FROM PC p
WHERE p.adresseIP LIKE '193.54%';
R :
DEREF(P.ADMINISTRE)(NADMIN,AGE,NOM) |
ADMIN_TYPE('A1', 45, 'Jacques Faure') |
ADMIN_TYPE('A1', 45, 'Jacques Faure') |
ADMIN_TYPE('A2', 50, 'Daniel Vielle') |

|