SlideShare une entreprise Scribd logo
Mohamed Prénom 3 BOUDIA
UPHF, CNRS, UMR 8201 - LAMIH, F-59313 Valenciennes, France
Email : mohamedPrénom 3.boudia@uphf.fr
Système de Gestion des Bases de
Données (SGBD)
FISE 3A ESE
CM6 : Le langage SQL (Partie 2)
 Objectif : sélectionner des données à partir de la BD qui satisfont des conditions
▪ Sélectionner : SELECT col1, col2, …
▪ À partir de la BD : FROM table1, table2, …
▪ Conditions à satisfaire : WHERE <condition>
 Requête SELECT sur tables et opérations algébriques sur relations
▪ Projection 𝜋𝑎1…𝑎𝑛𝑅 : sur les colonnes précisées après le SELECT
▪ Sélection 𝜎𝑝𝑟𝑒𝑑𝑖𝑐𝑎𝑡 𝑅 : sur les lignes qui répondent à la <condition>
▪ précisée après WHERE
▪ Produit cartésien R𝑋𝑆: des tables avec évaluation de la <condition>
▪ Le résultat de toute opération est une relation : propriété de fermeture
Interrogation des données
LignComm
Commande
RefCom RefProd Quantite
21A12 23 18
21A12 53 14
34B10 25 23
RefCom CodCli
21A12 18
34B10 2
CodCli Nom Prenom
18 TOTO Martin
2 TITI Amelie
Client
Projection
Selection
Syntaxe générale
SELECT [DISTINCT|UNIQUE| ALL] {listeColonnes/expression}
FROM nomTable1, [, nomTable2]
[WHERE condition]
[GROUP BY <colonne>|<expression>]
[HAVING <condition>]
[{UNION|UNION ALL|INTERSECT|MINUS} (sousRequête)]
[ORDER BY <colonne>|<expression> [asc|desc]];
 SELECT [DISTINCT|UNIQUE|ALL] ListeColonnes
▪ DISTINCT/UNIQUE : permet de donner les valeurs uniques (sans doublons)
▪ ALL : prend en compte les doublons
▪ ListeColonnes
{*|expression1 [[AS] alias1 ] [,expression2 [AS] alias2 ]…}
✓ * : pour désigner toutes les colonnes
✓ expression : nom de la colonne, fonction, constante ou calcul
✓ alias : renomme l’expression
✓ nom1, nom2, … : alias pour désigner la colonne
4
Clause SELECT
 SELECT Monotable
SELECT FROM <Table> [Alias]
▪ Une table après la clause SELECT
▪ La table peut être nommée avec un synonyme (alias) : l’intérêt étant
d’utiliser une abréviation du nom de la table
 SELECT Multi-tables
SELECT FROM <Table1> [Alias], <Table2> [Alias], …
▪ Plusieurs tables après la clause SELECT
▪ Les tables peuvent être nommées à l’aide d’un alias
Clause FROM
RefProd Designation Categorie Prix Stock
18 Tabouret A 16,78 200
23 Chaise B 23,00 350
25 Table B 123,00 36
Clauses SELECT…FROM : exemples SELECT
SELECT RefProd, Stock FROM Produit;
RefProd Designation Categorie Prix Stock
18 Tabouret A 16,78 200
23 Chaise B 23,00 350
25 Table B 123,00 36
Toutes les
colonnes
SELECT * FROM PRODUIT;
 [WHERE CONDITION]
▪ La clause WHERE permet de préciser un prédicat sur les lignes
▪ Condition : expression logique (retournant VRAI ou FAUX) composée de
colonnes, expressions, constantes qui sont des opérandes liés par des
opérateurs
▪ <opérateur> de base
✓ De comparaison (>, =, <, >=, <=, <>, !=)
✓ Logiques (NOT, AND, OR)
<opérande> <opérateur> <opérande>
Clause WHERE : forme générale
Clause WHERE : opérateurs ensemblistes (1)
a IN (X) Couleur IN (‘bleu’, ‘blanc’, ‘rouge’)
a NOT IN (X) Diplôme NOT IN (1,2,3)
a= ANY(X) Condition vraie si satisfaite pour une ou plusieurs
a= SOME(X) valeurs de la liste
PRIX < ANY (12, 24, 45)
a<> ALL(X)
Condition vraie si satisfaite pour toutes les valeurs de
la liste
a> ALL(X) PRIX < ALL (12, 24, 45)
a>= ALL(X)
IS [NOT] NULL Condition vraie si la valeur est [n’est pas] NULL
X : (x1,x2,...,xN); a : colonne, valeur, expression
Attention, ne jamais utiliser les opérateurs ‘=‘ ou ‘<>’ devant la valeur NULL.
Utiliser strictement IS NULL, IS NOT NULL
X=NULL est toujours évaluée à faux
Clause WHERE : opérateurs (2)
a[NOT] BETWEEN
v1 AND v2
Condition vraie si a est (ou n’est pas) compris entre les
deux valeurs données v1 et v2 (bornes comprises) Datefact
Between ’01-JAN-95’ AND ’31-DEC-95’
[NOT] EXISTS
<sous-requête>
Condition vraie si la requête retourne (ou ne retourne pas)
au moins un tuple (voir plus tard)
a[NOT] LIKE
<exp>
Condition vraie si a contient (ou ne contient pas) un
ensemble de caractères définis avec les jokers « - » et
« % »
_: caractère quelconque
%: suite de caractères quelconques
NOM like ‘___O%’
 Opérande
▪ Nom de colonne
▪ Valeur
o Numérique (entière ou décimale)
o Alphanumérique (entre quotes ‘’)
o Date
▪ Expression
o Arithmétique (utilisant les + ,- ,*, /)
o Fonctions
▪ Sous-requête : Requête fournissant une valeur ou une liste de valeurs compatibles
Clause WHERE : opérateurs (3)
 Utilisées dans les expressions, opérandes des conditions
 Fonctions catégorisées selon le type des arguments associés
▪ Fonctions numériques
▪ Fonctions chaînes de caractères
▪ Fonctions date
▪ Fonctions de conversion
▪ Autres fonctions
Clause WHERE : fonctions (1)
Fonctions arithmétiques
ABS(<n>) Valeur absolue de n
CEIL(<n>) Entier supérieur ou égal à n
FLOOR(<n>) Troncature à valeur entière
MOD(<m>,<n>) Reste de la division de m par n
POWER(<m>,<n>) m élevé à la puissance n
ROUND(<m>,<n>) m arrondi à n décimales
SIGN(<n>) Signe (-1 si <0, 0 si =0, 1 si >0)
SQRT(<n>) Racine carrée de n (0 si n<0)
TRUNC(<m>,<n>) m tronqué à n décimales
LN (<n>) Logarithme népérien
EXP(n) e (2.7182) à la puissance n
Fonctions sur les chaînes de caractères
INITCAP(<c>) La première lettre de chaque mot est
mise en majuscules
LOWER(<c>) Conversion en minuscules
UPPER(<c>) Conversion en majuscules
LTRIM(<c>) Suppression des espaces à gauche
RTRIM(<c>) Suppression des espaces à droite
REPLACE(<c>,<c1>,<c2>) Remplacement dans c de c1 par c2
SOUNDEX(<c>) Donne le son des mots de la chaîne (permet de
faire des recherches en phonétique)
SUBSTR(<c>,<c1>,<c2>) Sous-chaîne extraite commençant au
caractère de rang d et de longueur l
LENGTH(<c>) Longueur de la c
Fonctions sur les dates
ADD_MONTH(<d>,<n>) Ajoute n mois à la date d
LAST_DAY(<d>) Dernier jour du mois d
MONTH_BETWEEN(<d1>,<d2
>)
Nombre de mois entre les dates d1 et
d2
NEW_TIME(…) Date et heure dans un autre méridien
SYSDATE Date et heure système
CURRENT_DATE Retourne la date courante
LAST_DAY(d) Retourne le dernier jour
Autres fonctions
TO_CHAR(c) Retourne a chaîne c en VARCHAR2
GREATEST(expression[,e
xpression]…)
Retourne la plus grande des
expressions
LEAST(expression[,expr ession]…) Retourne la plus petite des
expressions
NULLIF(expr1, expr2) Retourne NULL si expr1=expr2, expr1
sinon
NVL(expr1, expr2) Retourne expr2 si expr1=NULL
 Les résultats d'un SELECT peuvent être triés (ordonnés) selon une ou plusieurs clés : nom ou
position de colonne
ORDER BY <expression1 >[ASC/DESC], expression2 [ASC/DESC], …
▪ Exemples
SELECT RefProd, Prix FROM Produit ORDER BY Prix DESC;
Affichage du produit
le plus cher au
produit le moins cher
RefProd Prix
18 16,78
23 23,00
25 123,00
RefProd Prix
25 123,00
23 23,00
18 16,78
Projection avec SELECT
sans ORDER BY
Projection avec SELECT ...
ORDER BY
CLAUSE ORDER BY
 Permettent de construire des ensembles à partir des résultats de SELECT considérés
comme des ensembles de lignes
SELECT ….FROM nomTable1 [WHERE…]
Opérateur
SELECT ….FROM nomTable2 [WHERE…]
▪ Pas d’opérateur de division (DIVIDE) !
▪ Résultats du select compatibles (nombre de colonnes, types de colonnes)
▪ Attention à l’ordre des SELECT
A  B A - B
A  B
MINUS
UNION|UNION ALL INTERSECT
Opérateurs ensemblistes
 Les tables doivent être compatibles: même nombre d’attributs de mêmes
types
 Union: les lignes des deuxtables sont concaténées verticalement sans
doublons dans le résultat. L’opération est commutative
 Intersection : les lignes communes aux deux tables sont ajoutées au résultat.
L’opération est commutative
 Différence : les lignes présents dans la première table et absents dans la seconde
table sont ajoutées au résultat. L’opération n’est pas commutative
▪ <Exp> : colonne ou groupe de colonnes de regroupement
▪ <Prédicat> : condition sur les groupes (et non sur les tuples !!)
▪ Les fonctions figurant dans le SELECT suivi du GROUP BY sont des fonctions de groupe
▪ Les colonnes figurant dans le SELECT, doivent figurer dans le GROUP BY
 Regroupe des tuples (crée des groupes ou des partitions) ayant les mêmes valeurs pour des
expressions sur les colonnes
 Une fonction de groupe (d'agrégation) agrège les valeurs d'une colonne en une
seule valeur de sortie
GROUP BY <Exp> [HAVING <Prédicat>]
Indique comment créer
les groupes de tuples
Indique quels groupes
sélectionner/filtrer
CLAUSE GROUP BY
Fonctions arithmétiques de groupe
AVG(<n>) Moyenne des valeurs de n (valeurs nulles non comptées)
COUNT(*) Nombre de tuples renvoyés par la requête
COUNT(<n>) Nombre de valeurs non nulles
SUM(<n>) Somme des valeurs de n
MAX(<n>) Valeur maximum de n
MIN(<n>) Valeur minimum de n
STDDEV(<n>) Ecart type de n (valeurs nulles non
comptées)
VARIANCE(<n>)
EVERY
ANY|SOME
• Variance de n (valeurs nulles nom comptées)
• Renvoie un booléen SQL qui vaut vrai si les occurrences
sont toutes vraies
• Renvoie un booléen SQL si au moins une occurrence
est vraie
 Rappel du produit cartésien entre deux tables : RXS
▪ Le résultat d'un produit cartésien RXS comprend |𝑅 | X | 𝑆 | tuples : combinaison des
tuples des tables R et S par juxtaposition
Commande
RefCom CodCli
21A12 18
34B10 2
CodCli Nom Prenom
18 TOTO Martin
2 TITI Amelie
Client
RefCom CodCliCo CodCliCl Nom Prénom
21A12 18 18 TOTO Martin
21A12 18 2 TITI Amelie
34B10 2 18 TOTO Martin
34B10 2 2 TITI Amelie
Commande X Client
Jointures
 Jointure naturelle : 𝑅 ⑅ 𝑆
▪ Une jointure naturelle est un produit cartésien sur lequel est appliqué
une sélection sur les attributs communs
Commande
RefCom CodCli
21A12 18
34B10 2
CodCli Nom Prenom
18 TOTO Martin
2 TITI Amelie
Client
RefCom CodCliCo CodCliCl Nom Prénom
21A12 18 18 TOTO Martin
34B10 2 2 TITI Amelie
(Commande X Client)Commande.CodCli=Client.CodCli
 Types
▪ Jointure relationnelles : une seule clause FROM qui relie des tables deux à deux
✓ Equi-jointure : opérateur d’égalité dans la clause de jointure
✓ Inéqui-jointure : opérateur (<>, <, >, >=, <=, BETWEEN, LIKE, IN) dans la clause de
jointure
✓ Auto-jointure : cas particulier de l’équijointure qui met en œuvre deux fois la même
table. L'utilisation d'un alias devient nécessaire pour distinguer les tables sources des
lignes jointes
✓ Jointure externe : favorise une table dite dominante par rapport à l’autre dite
subordonnée. Les lignes de la table dominante sont retournées même si elles ne
répondent pas à la condition de jointure
▪ Jointure procédurale : requêtes qui contiennent des sous- interrogations
(SELECT comme sous-interrogation).
Jointures
Jointure en forme procédurale : Sous-interrogations
SELECT colonnesTable1
FROM Table1
WHERE colonnes |expression(s) {IN|=|opérateur}
(SELECT colonne(s)Table2 FROM Table2
WHERE colonnes |expression(s) {IN|=|opérateur}
(SELECT…)
[AND (conditionsTable2)]
)
…
[AND (conditionsTable1)];
Niveau 1
Niveau 2
Niveau 3
Niveau i
 Forme générale
 Principes
▪ Chaque niveau i (i>1) est une sous-requête de la requête de
niveau i-1 (niveau supérieur)
▪ Le résultat d’une sous-requête de niveau i peut être à l’entrée
d’un opérateur dans la requête de niveau i-1 (supérieur)
▪ Deux types de jointures procédurales :
✓ Sous-interrogations non synchronisées
✓ Sous-interrogations synchronisées
Jointure en forme procédurale : Sous-interrogations
 Principe d’évaluation
▪ Seules les colonnes du SELECT de premier niveau sont extraites
▪ Une sous-interrogation est exécutée avant la requête de niveau supérieur.
Le résultat qu’elle retourne est utilisé par la requête de niveau supérieur
▪ Une sous interrogation peut être
✓ Monoligne : retourne une seule ligne grâce aux opérateurs =, >, <, >=
✓ Multilignes : retourne plusieurs lignes grâce aux opérateurs [NOT] IN, ANY, ALL
Sous-interrogations non synchronisées
 Principe
▪ Sous-interrogation mono ou multi-lignes
▪ Exécutée pour chaque ligne retournée de la sous-interrogation vers
l’interrogation de niveau supérieur
▪ Exécution équivalente à des boucles imbriquées
 Forme générale
Select alias1.col1
FROM nomTable1 alias1
WHERE col(s) opérateur (SELECT alias2.col2
FROM nomTable2 alias2
WHERE alias1.x opérateur alias2.y)
[AND (condition)];
Sous-interrogations synchronisées
 Principe de l’opérateur [NOT] EXISTS
▪ Retourne une valeur VRAI ou FAUX
✓ Vrai : si la sous-interrogation retourne au moins un tuple
✓ Faux : si la sous-interrogation ne retourne aucun tuple
▪ NOT EXISTS -> ensemble vide
▪ Permet de mettre en œuvre la division
SELECT col1, col2,…
FROM Table t1
WHERE [NOT] EXISTS
(SELECT {col | valeur}
FROM Table t2
WHERE t1.col1=t2.col2);
Sous-interrogations synchronisées et l’opérateur [NOT] EXISTS

Contenu connexe

PPTX
Bases_donnees_SQL cours L3 SPI 24 25.pptx
PPTX
Oracle : extension du langage SQL
PPTX
SQL-ORACLE.pptx
PDF
SQL-ORACLE.pdf
PPTX
Presentation sql
PDF
Cours+sql++ +base+de+données+-+bac+informatique+(2009-2010)++elève++khmiri+zied
PPT
Support_Cours_SQL.ppt
PPT
Chap 3 : structered query language
Bases_donnees_SQL cours L3 SPI 24 25.pptx
Oracle : extension du langage SQL
SQL-ORACLE.pptx
SQL-ORACLE.pdf
Presentation sql
Cours+sql++ +base+de+données+-+bac+informatique+(2009-2010)++elève++khmiri+zied
Support_Cours_SQL.ppt
Chap 3 : structered query language

Similaire à Base de données S6 - CM5 - SQL (Partie 1) (20)

PDF
chapitre6_Le_Langage_SQL-2.pdf
PDF
SQL partie III
PDF
Memo sql
PDF
4.SQL Server_2023 - Rappel Jointure et Sous-Requêtes (1).pdf
PPTX
SQL_3IIR_2024_2025.pptxjioiiouhuihuihuihuihui
PPSX
introduction au langage sql.ppsx
PDF
Introduction au langage SQL
PPTX
SQL_mcd_mld_mod_tout en un merci pour votre soutien et partagez vous aussi l'...
PPTX
les Sous Requetes SQL Et Plus avec la commande SELECT imbriquée avec les autr...
PPTX
Administration des bases de données Licence 2
PPTX
Cours3 gdm sql
PDF
SQL-Select.pdf
PPT
BASES DE DONNEES - UTILISATION D-ACCESS - LaBRI.ppt
PPTX
Le sql pour les nuls
PDF
Chap-SQL-LID-P1.pdf
PDF
BD_Cours_4_MPCI_etudiants.pdf
PPT
GSI_Chap4-bts-requêtesSQL
PDF
01 l'ordre select élémentaire
PDF
TP 8.pdf
PDF
Base-de-données.pdf
chapitre6_Le_Langage_SQL-2.pdf
SQL partie III
Memo sql
4.SQL Server_2023 - Rappel Jointure et Sous-Requêtes (1).pdf
SQL_3IIR_2024_2025.pptxjioiiouhuihuihuihuihui
introduction au langage sql.ppsx
Introduction au langage SQL
SQL_mcd_mld_mod_tout en un merci pour votre soutien et partagez vous aussi l'...
les Sous Requetes SQL Et Plus avec la commande SELECT imbriquée avec les autr...
Administration des bases de données Licence 2
Cours3 gdm sql
SQL-Select.pdf
BASES DE DONNEES - UTILISATION D-ACCESS - LaBRI.ppt
Le sql pour les nuls
Chap-SQL-LID-P1.pdf
BD_Cours_4_MPCI_etudiants.pdf
GSI_Chap4-bts-requêtesSQL
01 l'ordre select élémentaire
TP 8.pdf
Base-de-données.pdf
Publicité

Plus de sarrakouidri (6)

PPTX
Manipulation de tableaux (partie 1).pptx
PPTX
parametres_fonction.pptx Pour l'Algo et prog
PPT
Cours Développement Web Pour les informa
PPT
HTML (1).ppt pour Développement Web Ing Info
PPT
Cours CMS pour Développement Web Ing Info
PDF
Base de données S6 - CM5 - SQL (Partie 1)
Manipulation de tableaux (partie 1).pptx
parametres_fonction.pptx Pour l'Algo et prog
Cours Développement Web Pour les informa
HTML (1).ppt pour Développement Web Ing Info
Cours CMS pour Développement Web Ing Info
Base de données S6 - CM5 - SQL (Partie 1)
Publicité

Base de données S6 - CM5 - SQL (Partie 1)

  • 1. Mohamed Prénom 3 BOUDIA UPHF, CNRS, UMR 8201 - LAMIH, F-59313 Valenciennes, France Email : mohamedPrénom 3.boudia@uphf.fr Système de Gestion des Bases de Données (SGBD) FISE 3A ESE CM6 : Le langage SQL (Partie 2)
  • 2.  Objectif : sélectionner des données à partir de la BD qui satisfont des conditions ▪ Sélectionner : SELECT col1, col2, … ▪ À partir de la BD : FROM table1, table2, … ▪ Conditions à satisfaire : WHERE <condition>  Requête SELECT sur tables et opérations algébriques sur relations ▪ Projection 𝜋𝑎1…𝑎𝑛𝑅 : sur les colonnes précisées après le SELECT ▪ Sélection 𝜎𝑝𝑟𝑒𝑑𝑖𝑐𝑎𝑡 𝑅 : sur les lignes qui répondent à la <condition> ▪ précisée après WHERE ▪ Produit cartésien R𝑋𝑆: des tables avec évaluation de la <condition> ▪ Le résultat de toute opération est une relation : propriété de fermeture Interrogation des données
  • 3. LignComm Commande RefCom RefProd Quantite 21A12 23 18 21A12 53 14 34B10 25 23 RefCom CodCli 21A12 18 34B10 2 CodCli Nom Prenom 18 TOTO Martin 2 TITI Amelie Client Projection Selection
  • 4. Syntaxe générale SELECT [DISTINCT|UNIQUE| ALL] {listeColonnes/expression} FROM nomTable1, [, nomTable2] [WHERE condition] [GROUP BY <colonne>|<expression>] [HAVING <condition>] [{UNION|UNION ALL|INTERSECT|MINUS} (sousRequête)] [ORDER BY <colonne>|<expression> [asc|desc]];
  • 5.  SELECT [DISTINCT|UNIQUE|ALL] ListeColonnes ▪ DISTINCT/UNIQUE : permet de donner les valeurs uniques (sans doublons) ▪ ALL : prend en compte les doublons ▪ ListeColonnes {*|expression1 [[AS] alias1 ] [,expression2 [AS] alias2 ]…} ✓ * : pour désigner toutes les colonnes ✓ expression : nom de la colonne, fonction, constante ou calcul ✓ alias : renomme l’expression ✓ nom1, nom2, … : alias pour désigner la colonne 4 Clause SELECT
  • 6.  SELECT Monotable SELECT FROM <Table> [Alias] ▪ Une table après la clause SELECT ▪ La table peut être nommée avec un synonyme (alias) : l’intérêt étant d’utiliser une abréviation du nom de la table  SELECT Multi-tables SELECT FROM <Table1> [Alias], <Table2> [Alias], … ▪ Plusieurs tables après la clause SELECT ▪ Les tables peuvent être nommées à l’aide d’un alias Clause FROM
  • 7. RefProd Designation Categorie Prix Stock 18 Tabouret A 16,78 200 23 Chaise B 23,00 350 25 Table B 123,00 36 Clauses SELECT…FROM : exemples SELECT SELECT RefProd, Stock FROM Produit; RefProd Designation Categorie Prix Stock 18 Tabouret A 16,78 200 23 Chaise B 23,00 350 25 Table B 123,00 36 Toutes les colonnes SELECT * FROM PRODUIT;
  • 8.  [WHERE CONDITION] ▪ La clause WHERE permet de préciser un prédicat sur les lignes ▪ Condition : expression logique (retournant VRAI ou FAUX) composée de colonnes, expressions, constantes qui sont des opérandes liés par des opérateurs ▪ <opérateur> de base ✓ De comparaison (>, =, <, >=, <=, <>, !=) ✓ Logiques (NOT, AND, OR) <opérande> <opérateur> <opérande> Clause WHERE : forme générale
  • 9. Clause WHERE : opérateurs ensemblistes (1) a IN (X) Couleur IN (‘bleu’, ‘blanc’, ‘rouge’) a NOT IN (X) Diplôme NOT IN (1,2,3) a= ANY(X) Condition vraie si satisfaite pour une ou plusieurs a= SOME(X) valeurs de la liste PRIX < ANY (12, 24, 45) a<> ALL(X) Condition vraie si satisfaite pour toutes les valeurs de la liste a> ALL(X) PRIX < ALL (12, 24, 45) a>= ALL(X) IS [NOT] NULL Condition vraie si la valeur est [n’est pas] NULL X : (x1,x2,...,xN); a : colonne, valeur, expression Attention, ne jamais utiliser les opérateurs ‘=‘ ou ‘<>’ devant la valeur NULL. Utiliser strictement IS NULL, IS NOT NULL X=NULL est toujours évaluée à faux
  • 10. Clause WHERE : opérateurs (2) a[NOT] BETWEEN v1 AND v2 Condition vraie si a est (ou n’est pas) compris entre les deux valeurs données v1 et v2 (bornes comprises) Datefact Between ’01-JAN-95’ AND ’31-DEC-95’ [NOT] EXISTS <sous-requête> Condition vraie si la requête retourne (ou ne retourne pas) au moins un tuple (voir plus tard) a[NOT] LIKE <exp> Condition vraie si a contient (ou ne contient pas) un ensemble de caractères définis avec les jokers « - » et « % » _: caractère quelconque %: suite de caractères quelconques NOM like ‘___O%’
  • 11.  Opérande ▪ Nom de colonne ▪ Valeur o Numérique (entière ou décimale) o Alphanumérique (entre quotes ‘’) o Date ▪ Expression o Arithmétique (utilisant les + ,- ,*, /) o Fonctions ▪ Sous-requête : Requête fournissant une valeur ou une liste de valeurs compatibles Clause WHERE : opérateurs (3)
  • 12.  Utilisées dans les expressions, opérandes des conditions  Fonctions catégorisées selon le type des arguments associés ▪ Fonctions numériques ▪ Fonctions chaînes de caractères ▪ Fonctions date ▪ Fonctions de conversion ▪ Autres fonctions Clause WHERE : fonctions (1)
  • 13. Fonctions arithmétiques ABS(<n>) Valeur absolue de n CEIL(<n>) Entier supérieur ou égal à n FLOOR(<n>) Troncature à valeur entière MOD(<m>,<n>) Reste de la division de m par n POWER(<m>,<n>) m élevé à la puissance n ROUND(<m>,<n>) m arrondi à n décimales SIGN(<n>) Signe (-1 si <0, 0 si =0, 1 si >0) SQRT(<n>) Racine carrée de n (0 si n<0) TRUNC(<m>,<n>) m tronqué à n décimales LN (<n>) Logarithme népérien EXP(n) e (2.7182) à la puissance n
  • 14. Fonctions sur les chaînes de caractères INITCAP(<c>) La première lettre de chaque mot est mise en majuscules LOWER(<c>) Conversion en minuscules UPPER(<c>) Conversion en majuscules LTRIM(<c>) Suppression des espaces à gauche RTRIM(<c>) Suppression des espaces à droite REPLACE(<c>,<c1>,<c2>) Remplacement dans c de c1 par c2 SOUNDEX(<c>) Donne le son des mots de la chaîne (permet de faire des recherches en phonétique) SUBSTR(<c>,<c1>,<c2>) Sous-chaîne extraite commençant au caractère de rang d et de longueur l LENGTH(<c>) Longueur de la c
  • 15. Fonctions sur les dates ADD_MONTH(<d>,<n>) Ajoute n mois à la date d LAST_DAY(<d>) Dernier jour du mois d MONTH_BETWEEN(<d1>,<d2 >) Nombre de mois entre les dates d1 et d2 NEW_TIME(…) Date et heure dans un autre méridien SYSDATE Date et heure système CURRENT_DATE Retourne la date courante LAST_DAY(d) Retourne le dernier jour
  • 16. Autres fonctions TO_CHAR(c) Retourne a chaîne c en VARCHAR2 GREATEST(expression[,e xpression]…) Retourne la plus grande des expressions LEAST(expression[,expr ession]…) Retourne la plus petite des expressions NULLIF(expr1, expr2) Retourne NULL si expr1=expr2, expr1 sinon NVL(expr1, expr2) Retourne expr2 si expr1=NULL
  • 17.  Les résultats d'un SELECT peuvent être triés (ordonnés) selon une ou plusieurs clés : nom ou position de colonne ORDER BY <expression1 >[ASC/DESC], expression2 [ASC/DESC], … ▪ Exemples SELECT RefProd, Prix FROM Produit ORDER BY Prix DESC; Affichage du produit le plus cher au produit le moins cher RefProd Prix 18 16,78 23 23,00 25 123,00 RefProd Prix 25 123,00 23 23,00 18 16,78 Projection avec SELECT sans ORDER BY Projection avec SELECT ... ORDER BY CLAUSE ORDER BY
  • 18.  Permettent de construire des ensembles à partir des résultats de SELECT considérés comme des ensembles de lignes SELECT ….FROM nomTable1 [WHERE…] Opérateur SELECT ….FROM nomTable2 [WHERE…] ▪ Pas d’opérateur de division (DIVIDE) ! ▪ Résultats du select compatibles (nombre de colonnes, types de colonnes) ▪ Attention à l’ordre des SELECT A  B A - B A  B MINUS UNION|UNION ALL INTERSECT Opérateurs ensemblistes
  • 19.  Les tables doivent être compatibles: même nombre d’attributs de mêmes types  Union: les lignes des deuxtables sont concaténées verticalement sans doublons dans le résultat. L’opération est commutative  Intersection : les lignes communes aux deux tables sont ajoutées au résultat. L’opération est commutative  Différence : les lignes présents dans la première table et absents dans la seconde table sont ajoutées au résultat. L’opération n’est pas commutative
  • 20. ▪ <Exp> : colonne ou groupe de colonnes de regroupement ▪ <Prédicat> : condition sur les groupes (et non sur les tuples !!) ▪ Les fonctions figurant dans le SELECT suivi du GROUP BY sont des fonctions de groupe ▪ Les colonnes figurant dans le SELECT, doivent figurer dans le GROUP BY  Regroupe des tuples (crée des groupes ou des partitions) ayant les mêmes valeurs pour des expressions sur les colonnes  Une fonction de groupe (d'agrégation) agrège les valeurs d'une colonne en une seule valeur de sortie GROUP BY <Exp> [HAVING <Prédicat>] Indique comment créer les groupes de tuples Indique quels groupes sélectionner/filtrer CLAUSE GROUP BY
  • 21. Fonctions arithmétiques de groupe AVG(<n>) Moyenne des valeurs de n (valeurs nulles non comptées) COUNT(*) Nombre de tuples renvoyés par la requête COUNT(<n>) Nombre de valeurs non nulles SUM(<n>) Somme des valeurs de n MAX(<n>) Valeur maximum de n MIN(<n>) Valeur minimum de n STDDEV(<n>) Ecart type de n (valeurs nulles non comptées) VARIANCE(<n>) EVERY ANY|SOME • Variance de n (valeurs nulles nom comptées) • Renvoie un booléen SQL qui vaut vrai si les occurrences sont toutes vraies • Renvoie un booléen SQL si au moins une occurrence est vraie
  • 22.  Rappel du produit cartésien entre deux tables : RXS ▪ Le résultat d'un produit cartésien RXS comprend |𝑅 | X | 𝑆 | tuples : combinaison des tuples des tables R et S par juxtaposition Commande RefCom CodCli 21A12 18 34B10 2 CodCli Nom Prenom 18 TOTO Martin 2 TITI Amelie Client RefCom CodCliCo CodCliCl Nom Prénom 21A12 18 18 TOTO Martin 21A12 18 2 TITI Amelie 34B10 2 18 TOTO Martin 34B10 2 2 TITI Amelie Commande X Client Jointures
  • 23.  Jointure naturelle : 𝑅 ⑅ 𝑆 ▪ Une jointure naturelle est un produit cartésien sur lequel est appliqué une sélection sur les attributs communs Commande RefCom CodCli 21A12 18 34B10 2 CodCli Nom Prenom 18 TOTO Martin 2 TITI Amelie Client RefCom CodCliCo CodCliCl Nom Prénom 21A12 18 18 TOTO Martin 34B10 2 2 TITI Amelie (Commande X Client)Commande.CodCli=Client.CodCli
  • 24.  Types ▪ Jointure relationnelles : une seule clause FROM qui relie des tables deux à deux ✓ Equi-jointure : opérateur d’égalité dans la clause de jointure ✓ Inéqui-jointure : opérateur (<>, <, >, >=, <=, BETWEEN, LIKE, IN) dans la clause de jointure ✓ Auto-jointure : cas particulier de l’équijointure qui met en œuvre deux fois la même table. L'utilisation d'un alias devient nécessaire pour distinguer les tables sources des lignes jointes ✓ Jointure externe : favorise une table dite dominante par rapport à l’autre dite subordonnée. Les lignes de la table dominante sont retournées même si elles ne répondent pas à la condition de jointure ▪ Jointure procédurale : requêtes qui contiennent des sous- interrogations (SELECT comme sous-interrogation). Jointures
  • 25. Jointure en forme procédurale : Sous-interrogations SELECT colonnesTable1 FROM Table1 WHERE colonnes |expression(s) {IN|=|opérateur} (SELECT colonne(s)Table2 FROM Table2 WHERE colonnes |expression(s) {IN|=|opérateur} (SELECT…) [AND (conditionsTable2)] ) … [AND (conditionsTable1)]; Niveau 1 Niveau 2 Niveau 3 Niveau i  Forme générale
  • 26.  Principes ▪ Chaque niveau i (i>1) est une sous-requête de la requête de niveau i-1 (niveau supérieur) ▪ Le résultat d’une sous-requête de niveau i peut être à l’entrée d’un opérateur dans la requête de niveau i-1 (supérieur) ▪ Deux types de jointures procédurales : ✓ Sous-interrogations non synchronisées ✓ Sous-interrogations synchronisées Jointure en forme procédurale : Sous-interrogations
  • 27.  Principe d’évaluation ▪ Seules les colonnes du SELECT de premier niveau sont extraites ▪ Une sous-interrogation est exécutée avant la requête de niveau supérieur. Le résultat qu’elle retourne est utilisé par la requête de niveau supérieur ▪ Une sous interrogation peut être ✓ Monoligne : retourne une seule ligne grâce aux opérateurs =, >, <, >= ✓ Multilignes : retourne plusieurs lignes grâce aux opérateurs [NOT] IN, ANY, ALL Sous-interrogations non synchronisées
  • 28.  Principe ▪ Sous-interrogation mono ou multi-lignes ▪ Exécutée pour chaque ligne retournée de la sous-interrogation vers l’interrogation de niveau supérieur ▪ Exécution équivalente à des boucles imbriquées  Forme générale Select alias1.col1 FROM nomTable1 alias1 WHERE col(s) opérateur (SELECT alias2.col2 FROM nomTable2 alias2 WHERE alias1.x opérateur alias2.y) [AND (condition)]; Sous-interrogations synchronisées
  • 29.  Principe de l’opérateur [NOT] EXISTS ▪ Retourne une valeur VRAI ou FAUX ✓ Vrai : si la sous-interrogation retourne au moins un tuple ✓ Faux : si la sous-interrogation ne retourne aucun tuple ▪ NOT EXISTS -> ensemble vide ▪ Permet de mettre en œuvre la division SELECT col1, col2,… FROM Table t1 WHERE [NOT] EXISTS (SELECT {col | valeur} FROM Table t2 WHERE t1.col1=t2.col2); Sous-interrogations synchronisées et l’opérateur [NOT] EXISTS