0% ont trouvé ce document utile (0 vote)
39 vues8 pages

Théorie Requêtes SQL

Le document présente les requêtes SQL, y compris la syntaxe de base, les projections, les jointures, l'agrégation et la gestion des valeurs NULL. Il explique comment utiliser des clauses comme WHERE, GROUP BY, HAVING, LIMIT et OFFSET pour filtrer et organiser les résultats des requêtes. Des exemples pratiques illustrent l'utilisation de ces concepts dans le cadre de la manipulation de données en SQL.

Transféré par

drp.7394
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues8 pages

Théorie Requêtes SQL

Le document présente les requêtes SQL, y compris la syntaxe de base, les projections, les jointures, l'agrégation et la gestion des valeurs NULL. Il explique comment utiliser des clauses comme WHERE, GROUP BY, HAVING, LIMIT et OFFSET pour filtrer et organiser les résultats des requêtes. Des exemples pratiques illustrent l'utilisation de ces concepts dans le cadre de la manipulation de données en SQL.

Transféré par

drp.7394
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

C VOLT - informatique 2024 - 2025

Requête SQL (= SQL query)

Une requête SQL simple est de la forme :

SELECT Attribut1, Attribut2, Attribut3 projection


conditions presque comme en Python :
FROM Table1  jourCours = "lundi"
 note < 4.5
WHERE condition(s) restriction
Optionnels  note <> 4.5 (et pas !=)
ORDER BY Attribut3 ordonnancement  jourCours = "lundi" AND note < 4.5
 jourCours = "lundi" OR jourCours = "mardi"
En général, on écrit les mots réservés en majuscule pour que la requête soit plus lisible.
Ce n’est pas obligatoire.

26

Requête SQL : projection


Dans une projection, il est possible de

• sélectionner une partie des attributs : SELECT Attribut1, Attribut2

• sélectionner tous les attributs : SELECT *

• sélectionner des valeurs distinctes d’attributs : SELECT DISTINCT Attribut1, Attribut2

• sélectionner le minimum / maximum : SELECT MIN(Attribut1)

• dénombrer les occurrences d'un attribut : SELECT COUNT(Attribut1)

• dénombrer les occurrences distinctes d'un attribut : SELECT COUNT(DISTINCT Attribut1)

• et plus... (voir la documentation ou des tutoriels)


([Link]

27

1
C VOLT - informatique 2024 - 2025

Requête SQL : équijointures


Lorsqu’on veut sélectionner des attributs de plusieurs tables, il faut indiquer
dans la requête SQL comment relier les différentes tables.

Une clause INNER JOIN permet de relier deux tables selon une ou
plusieurs conditions :
Si deux tables ont un attribut
SELECT [Link], [Link], [Link]… homonyme, il faut préfixer le nom
de l'attribut par le nom de la table.
FROM Table1 La lisibilité est également
améliorée
INNER JOIN Table2 ON Table1.Attribut1 = Table2.Attribut5
clé primaire = clé étrangère condition(s) de jointure
INNER JOIN Table3 ON Table2.Attribut3 = Table3.Attribut1
clé primaire = clé étrangère
28

Requête SQL : équijointures


En préfixant avec le nom de la table, la longueur de la requête augmente…
Afin de réduire cet impact, il est possible d’utiliser un nom de corrélation (alias de table).
Généralement la première lettre du nom de la table est utilisé, pour autant que les tables
impliquées ne commencent pas par la même lettre.

La syntaxe de la requête devient :

SELECT [Link], [Link], [Link]…

FROM Table1 T1
clé primaire = clé étrangère
INNER JOIN Table2 T2 ON T1.Attribut1 = T2.Attribut5
condition(s) de jointure
clé primaire = clé étrangère
INNER JOIN Table3 T3 ON T2.Attribut3 = T3.Attribut1
29

2
C VOLT - informatique 2024 - 2025

Modèle Logique Relationnel de Données


INNER JOIN possibles
SALLE MAITRE
noSalle noMaitre
capacitéSalle nomMaitre
rangSalle COURS prenomMaitre
colonneSalle noCours sexeMaitre
typeSalle libelleCours dateNaissanceMaitre

effectifMaxCours
MOYENNE jourCours ELEVE
noEleve noMaitre noEleve
noCours noSalle nomEleve
moyenne prenomEleve
sexeEleve
dateNaissanceEleve

30

Requête SQL : agrégation

La clause GROUP BY permet de regrouper les lignes d'une requête qui


partagent une ou plusieurs valeurs communes et d'appliquer des fonctions
statistiques d'agrégation sur chaque groupe.
Exemples de requêtes :
• Combien y-a-t-il d’employés par département ?
• Quel est l'âge moyen/le plus élevé, le moins élevé des employés de
chaque département ?
• Quelle est la masse salariale de chaque département ?

31

3
C VOLT - informatique 2024 - 2025

Requête SQL : agrégation

La clause GROUP BY vient s’ajouter à une éventuelle clause WHERE.

SELECT Attribut1, Attribut2, … fonction(s) statistique(s)


FROM Table1
La clause SELECT ne contient généralement
WHERE condition(s) que les attributs qui sont dans le GROUP BY
GROUP BY Attribut(s) ou une/des fonction(s) d'agrégation

ORDER BY Attribut3

32

Requête SQL : restriction sur agrégation

La clause HAVING est utilisée pour filtrer les résultats d'un GROUP BY
basés sur une condition spécifique. C'est l'équivalent de WHERE mais pour
les regroupements.
Exemples de requêtes :
• Quels sont les départements de plus de x employés ?
• Quel sont les départements pour lesquels l’âge moyen dépasse x ans ?
• Quel sont les départements pour lesquels la masse salariale dépasse
x CHF ?

33

4
C VOLT - informatique 2024 - 2025

Requête SQL : restriction sur agrégation

La clause HAVING vient s’ajouter à la clause GROUP BY dont elle est


indissociable.
SELECT Attribut1, Attribut2, Attribut3
FROM Table1
WHERE condition(s)  restriction avant le regroupement

GROUP BY Attribut(s)
HAVING condition(s)  restriction après le regroupement

ORDER BY Attribut3

34

Requête SQL : clause LIMIT

Cette clause
• permet de limiter le nombre de résultats retournés par une requête SQL.
• se place en dernière position dans la requête et quasi obligatoirement
après un ORDER BY pour garantir un résultat cohérent.
• est suivie par une valeur entière exprimant le nombre de lignes qui doivent
être retournées
Exemple : SELECT attribut(s) FROM table ORDER BY attribut LIMIT n

35

5
C VOLT - informatique 2024 - 2025

Requête SQL : clause LIMIT avec OFFSET

OFFSET permet d’indiquer à partir de quelle ligne, le nombre de lignes fixé


par la clause LIMIT s’applique.
Exemple : SELECT * FROM table LIMIT 10 OFFSET 20;
retournera 10 lignes à partir de la 21e ligne.

36

Valeur NULL

Les valeurs NULL représentent l'absence de données ou des données


inconnues en SQL.

Pour tester la présence/absence de cette valeur, SQL met é disposition la


clause IS [NOT] NULL.
Leur gestion correcte est essentielle pour maintenir l'intégrité des données
et obtenir des résultats précis lors des requêtes.
• NULL n'est pas égal à zéro, à une chaîne vide ou à un espace
• NULL n'est pas égal à un autre NULL
• NULL n'est ni vrai ni faux, mais inconnu

37

6
C VOLT - informatique 2024 - 2025

NULL dans les opérations arithmétiques

Toute opération arithmétique impliquant NULL donne NULL


NULL dans les fonctions d'agrégation
• COUNT(*) compte toutes les lignes
• COUNT(colonne) ignore les valeurs NULL
• SUM, AVG, MIN, MAX ignorent les valeurs NULL

38

Gestion des valeurs NULL

SELECT * FROM clients WHERE NOT (age = 25);


et
SELECT * FROM clients WHERE age != 25;
ne retournent pas le même résultat.

La première requête retourne les lignes où age IS NULL, la seconde ne


retourne PAS les lignes où age IS NULL.

• TRUE OR NULL = TRUE TRUE AND NULL = NULL


• FALSE OR NULL = NULL FALSE AND NULL = FALSE

39

7
C VOLT - informatique 2024 - 2025

Gestion des valeurs NULL : IFNULL()

SQLite fournit la fonction IFNULL() pour convertir une valeur NULL en une
autre valeur spécifiée.
La syntaxe est la suivante : IFNULL(expression, valeur_de_remplacement)
Cette fonction vérifie si la première expression est NULL :
• Si elle est NULL, la fonction retourne la valeur de remplacement fournie en
second argument, sinon elle retourne la valeur de la première expression.
• Exemple
SELECT nom, IFNULL(telephone, 'Non renseigné') AS telephone_contact
FROM clients;
Si telephone est NULL, la requête affichera 'Non renseigné' à la place.

40

Vous aimerez peut-être aussi