1. Introduction
SQL (Structured Query Language) est basé sur des mots clefs anglais.
Les requêtes s'écrivent sous formes de blocs :
SELECT (On commence toujours par cette clause) : Liste des attributs de la requête.
FROM : Liste des relations nécessaires
FROM et SELECT sont des clauses obligatoires dans un bloc SQL
WHERE : Liste de toutes les relations de la requête
ORDER BY : Attributs ordonnés
WHERE et ORDER BY sont des clauses facultatives
- Il y a des normes mais il existe différents dialectes SQL (nous allons étudier celui d'oracle : SQL+)
- On termine toujours une requête par un point virgule
[...] Jointures imbriquées
La requête comporte plusieurs blocs SELECT-FROM-WHERE qui sont imbriqués.
Les blocs imbriqués sont appelés sous-bloc ou sous-requête, ils sont exécutés en premier.
1er cas : Le bloc rend au plus un résultat
- Le résultat est une valeur
Exemple : Donnez le numéro des pilotes gagnants plus que la moyenne
SELECT NUM_PIL
FROM PILOTE
WHERE SALAIRE ?
(SELECT AVG (SALAIRE)
FROM PILOTE) (...)
[...] De la forme : Attribut LIKE ‘Chaîne générique' Où Chaîne générique peut contenir : o _ (underscore) pour n'importe quel caractère o % pour n'importe quelle série de caractère Exemple : Numéro des Airbus (NOM_AV commence par SELECT NUM_AV FROM AVION WHERE NOM_AV LIKE - Il existe une forme une forme négative pour chaque prédicat : Attribut NOT BETWEEN Val 1 AND Val 2 Attribut NOT IN (Val Val ) Attribut IS NOT NULL Attribut NOT LIKE ‘Chaîne générique 4. Calcul horizontaux Un calcul horizontal s'exécute pour chaque tuple sélectionné par la requête Il apparait soir dans SELECT, soit dans WHERE Il comporte : Des opérateurs arithmétique , * / pour des attributs numériques L'opérateur de concaténation pour les chaines et pour les dates (Attribut Date + Nb jours). Le résultat est une date. Il peut comporter des fonctions de calcul horizontal UPPER (Mise en majuscule), LOWER (Mise en minuscule), LENGHT (donne la taille) etc . [...]
[...] NUM_PIL FROM PILOTE WHERE PILOTE.NUM_PIL = VOL.NUM_PIL ; 9. Opérateurs ensemblistes Avec Oracle : - UNION pour l'union - INTERSECT pour l'intersection - MINUS pour la différence Exemple : Donnez le numéro et l'adresse des pilotes faisant un vol au départ de leur ville de résidence. SELECT NUM_PIL, ADR FROM PILOTE INTERSECT SELECT NUM_PIL, VILL_DEP FROM VOL ; Remarque : Avec les opérateurs ensemblistes, il y a élimination automatique des duplicats. Les clauses SELECT doivent comporter des attributs comparables donnés dans le même ordre 10. [...]
[...] Soit x inclus dans R Un sous ensemble d'attribut et t un tuple de R. La classe d'équivalence de t selon notée définie par : = Є r / = {tout les tuples ayant la même valeur que t pour signifie valeur de u pour X (projection de u sur t signifie valeur de t pour X VOL NUM_VOL NUM_PIL NUM_AV IT100 T1 IT200 T2 IT300 T3 IT400 T4 IT500 T5 IT600 T6 (Rouge = C1, Bleu = C2, Vert = C3) = T2, T4) = T6) = T2) 15 Définition d'un partition d'une relation selon un ensemble d'attribut = { quelque soit t Є rPartitionner une relation selon X consiste à créer des tuples selon , généralement pour appliquer une fonction agrégative. [...]
[...] Exemple : (On suppose que dans PILOTE, on a les attributs SALAIRE et PRIME) Donnez pour chaque pilote (numéro) son revenu total (SALAIRE + PRIME) SELECT NUM_PIL, SALAIRE + PRIME FROM PILOTE ; Exemple : Donnez le numéro des pilotes marseillais SELECT NUMPIL FROM PILOTE WHERE UPPER (ADRESSE) = ‘MARSEILLE Exemple : Donnez le numéro des pilotes marseillais et revenu total à condition que ce revenu augmenté de 10% reste inférieur à SELECT NUM_PIL, SALAIRE + PRIME FROM PILOTE WHERE ADRESSE = ‘MARSEILLE AND (SALAIRE + PRIME) * 1.1 3000 ; Note : Le point est le séparateur décimal Problèmes : Calculs horizontaux en présence de valeurs nulles PILOTE NUM_PIL Si on applique : SELECT NUM_PIL, SALAIRE + PRIME FROM PILOTE ; . SALAIRE PRIME On s'attend à NUM_PIL SALAIRE + PRIME Pourtant, on obtient : NUM_PIL SALAIRE + PRIME Tout calcul portant sur une valeur nulle rend une valeur nulle (exception pour les chaines). Pour résoudre ce problème, on doit utiliser la fonction NVL. De la forme : NVL (Attribut, Valeur par défaut) La valeur par défaut remplace une valeur nulle éventuelle 4 Exemple : SELECT NUM_PIL, NVL (SALAIRE,0) + NVL (PRIME,0) FROM PILOTE ; 5. [...]
[...] SELECT SUM (SALAIRE) + SUM (PRIME) FROM PILOTE ; Résultat obtenu : (13000 + 1300) = 14300 : Le calcul horizontal est fait une seule fois. SELECT SUM (SALAIRE + PRIME) FROM PILOTE ; Résultat obtenu : SUM (3500 NULL NULL 3800) 7300 Solution : On traite les NULL SELECT SUM (NVL (SALAIRE,0) + NVL (PRIME,0) FROM PILOTE ; 6. Expression des jointures prédicatives - Elles s'expriment dans la clause WHERE, exactement sous la même forme qu'en algébrique. De la forme : Attribut 1 θ Attribut 2 où θ Є , - et Attribut 1 et Attribut 2 sont compatibles. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture