Extrait du cours manipulation des données
B) Les requêtes imbriquées
Elles sont appelées également sous-requêtes. Il s’agit d’une requête incorporée dans la commande WHERE ou HAVING d’une autre requête (requête principale). Cette dernière utilise les résultats de la sous-requête.
Certaines sous-requêtes permettent de remplacer les jointures. Les sous-requêtes renvoient une ou plusieurs valeurs.
1- La requête ne renvoie qu’une seule valeur.
L’imbrication de la requête avec la sous-requête se fera avec un opérateur de comparaison (=, >, etc)
On souhaite connaître le code éditeur et le nom de l’éditeur du livre I101
La requête SQL peut alors être la suivante :
SELECT CodeEditeur, NomEditeur
FROM EDITEUR, LIVRE
WHERE CodeEditeur.EDITEUR=CodeEditeur.LIVRE
AND CodeLivre IN (‘I101’)
Elle peut également être la suivante :
SELECT CodeEditeur,NomEditeur
FROM EDITEUR
WHERE CodeEditeur =
(SELECT CodeEditeur
FROM LIVRE
WHERE CodeLivre IN(‘I101’)) ;
Remarque : La sous-requête est notée entre parenthèses.
Les requêtes imbriquées sont particulièrement adaptées avec des fonctions statistiques dans la sous-requête.
Exemple :
– Quel est le CodeLivre ayant le nombre de pages le plus élevé ?
SELECT CodeLivre
FROM LIVRE
WHERE NbrePages =
(SELECT Max(NbrePages)
FROM LIVRE );
2- La sous-requête renvoie plusieurs valeurs
L’imbrication se fera avec bien souvent l’opérateur logique IN
Exemple :
On souhaite connaître le code editeur et le nom de l’éditeur des livres appelés INFO
La requête SQL peut alors être la suivante :
SELECT Distinct CodeEditeur, NomEditeur
FROM EDITEUR, LIVRE
WHERE CodeEditeur.EDITEUR=CodeEditeur.LIVRE
AND NomLivre IN(‘Info’)
Elle peut également être la suivante :
SELECT CodeEditeur,NomEditeur
FROM EDITEUR
WHERE CodeEditeur IN
(SELECT CodeEditeur
FROM LIVRE
WHERE NomLivre IN(‘Info’)) ;
Dans la première formulation, la mention DISTINCT permet d’éliminer les doublons.
ORDER BY ne peut être noté dans une sous-requête.
II- La manipulation des données
Il est possible également de parler de mise à jour ou d’actualisation des données.
Pour cela, il existe principalement 3 commandes : INSERT, UPDATE et DELETE.
A) La commande INSERT
Elle permet d’insérer un ou plusieurs tuples dans une table. Il est possible de dire également que cette commande va permettre d’assurer le « peuplement » des tables de la base à partir de données nouvelles.
Le formalisme est le suivant :
INSERT INTO <TABLE>
VALUES ( ‘ valeur1 ‘,’ valeur2 ‘) ;
Exemple :
INSERT INTO EDITEUR
VALUES (‘LACO1’,’BertrandLacopee’, ‘8, rue de Nevers’,’75009’,’PARIS’)
Si la mise à jour n’existe que pour quelques attributs, le formalisme est le suivant :
INSERT INTO <TABLE> (ATTRIBUT1, ATTRIBUT2)
VALUES (‘valeur1′,’valeur2’) ;
Il est alors nécessaire de respecter l’ordre des attributs.
……..
Base de données les requêtes SQL et manipulation des données (544 KO) (Cours PDF)