Langage d'interrogation des données (LID)
- Fiche de cours
- Quiz et exercices
- Vidéos et podcasts
Le langage d’interrogation de données (LID) permet d’établir une combinaison d’opérations portant sur des tables (relation). Le résultat de cette combinaison d'opérations est lui-même une table dont l’existence ne dure qu'un temps.
On observera qu’en fait l'ordre SQL SELECT est composé de six clauses dont quatre sont optionnelles. La plupart du temps, la difficulté réside dans la compréhension de la différence entre le filtre WHERE et le filtre HAVING. Le filtre WHERE permet de filtrer les données des tables tandis que le filtre HAVING permet de filtrer les données du résultat.
Voici les clauses de l'ordre SELECT :
SELECT | NomChamp1, NomChamp2 |
Champs à projeter ou à calculer ou fonction d’agrégat |
FROM | TABLE1, TABLE2… | Tables utiles à la requête |
WHERE | Expression AND/OR | Jointures et restrictions |
GROUP BY | NomChamp | Regroupement de résultat d’opérations d’agrégat |
HAVING | Expression | Restriction sur l’affichage des résultats d’opérations d’agrégat |
ORDER BY | NomChamp [ASC]/DESC | Critères de tri |
Nous n’étudierons donc pas toutes les clauses du langage d’interrogation de données mais seulement les suivantes : SELECT et FROM, WHERE et ORDER BY.
SELECT [DISTINCT ou ALL] * ou liste de colonnes
FROM nom de table ou de la vue
[WHERE prédicats]
[GROUP BY ordre des groupes]
[HAVING condition]
[ORDER BY ] liste de colonnes
A côté de cette syntaxe, il existe les agrégats suivants :
- SUM […] : renvoie à la somme d'un champ (valeurs de données de type numérique ou date/heure).
- AVG […] : renvoie la moyenne d'un champ (valeurs de données de type numérique ou date/heure).
- MIN […] : renvoie la valeur minimale d'un champ (valeurs de données de type numérique, date et texte).
- MAX […] : renvoie la valeur maximale d'un champ (valeurs de données de type numérique, date et texte).
- COUNT […] : renvoie le nombre d’enregistrements de la table.
• Il est possible de surnommer une table dans la clause FROM, dans ce cas, la syntaxe de la partie FROM de la commande SELECT est la suivante :
FROM nom_de_table ou nom_de_la_vue surnom
WHERE [prédicats]
Le prédicat doit contenir n’importe quelle expression logique renvoyant une valeur vraie.
Exemple :
SELECT CLI_NOM FROM T_CLIENT WHERE 1=1 |
CLI_NOM ------- DUPONT MARTIN BOUVIER DUBOIS DREYFUS FAURE LACOMBE DUHAMEL BOYER MARTIN ... |
Attention : la plupart des SGBDR ne comportent pas de colonne de type booléen. Une requête comme la première risque d'échouer.
Exemple :
SELECT * FROM TJ_CHB_PLN_CLI WHERE CHB_PLN_CLI_OCCUPE |
ERREUR ! bien que CHB_PLN_CLI_OCCUPE puisse être du booléen, la plupart des compilateurs SQL n’acceptent pas ce test direct. |
SELECT * FROM TJ_CHB_PLN_CLI WHERE CHB_PLN_CLI_OCCUPE = True |
CORRECT ... Mais sur certains compilateurs SQL il faut faire : CHB_PLN_CLI_OCCUPE = 'True' (littéral). Si le type booléen n'existe pas, alors il faut faire CHB_PLN_CLI_OCCUPE = 1 si l'on a choisi de définir les booléens comme INTEGER(1) avec 0 et 1 |
• La clause ORDER BY permet de définir le tri des colonnes de la réponse, soit en précisant le nom littéral de la colonne, soit en précisant son numéro d'ordre dans l'énumération qui suit le mot clef SELECT. Sa syntaxe est la suivante :
ORDER BY colonne1 | 1 [ASC ou DESC ] [, colonne2 | 2 [ASC ou DESC ] ...
ASC spécifie l’ordre ascendant et DESC l’ordre descendant du tri. ASC ou DESC peuvent être omis, dans ce cas c'est l'ordre ascendant qui est utilisé par défaut.
Bien que la clause ORDER BY ne soit pas nécessaire, il est souvent utile de trier la réponse en fonction des colonnes. En revanche le temps de réponse s'en ressent souvent.
Pour spécifier l'ordre de tri, on doit placer les noms des colonnes séparées par des virgules juste après le mot clef ORDER BY, dans l'ordre voulu. On peut aussi utiliser le rang de chaque colonne dans l'ordre spécifié dans la clause SELECT.
Attention : le tri est un tri interne, il ne faut donc placer dans cette clause que les noms des colonnes présentées dans la clause SELECT.
Souvent, le fait de placer DISTINCT suffit, en général, à établir un tri puisque le moteur doit se livrer à une comparaison des lignes mais ce mécanisme n'est pas garanti car ce tri s’effectue dans un ordre non contrôlable qui peut varier d’un serveur à l’autre.
Exemple :
SELECT CLI_NOM, CLI_PRENOM FROM T_CLIENT ORDER BY CLI_NOM, CLI_PRENOM ou SELECT CLI_NOM, CLI_PRENOM FROM T_CLIENT ORDER BY 1, 2 |
CLI_NOM CLI_PRENOM -------- ---------- AIACH Alexandre ALBERT Christian AUZENAT Michel BACQUE Michel BAILLY Jean-François BAVEREL Frédéric BEAUNEE Pierre BENATTAR Bernard BENATTAR Pierre BENZAQUI Joël ... |
Remarque : les marqueurs NULL sont situés en premier dans l'ordre ainsi établi.
Un problème, qui n’est pas résolu, est de pouvoir choisir l’ordre des colonnes de la réponse. Sur certains serveurs cela peut être obtenu en plaçant les noms des colonnes à obtenir dans l’ordre où l’on veut les voir apparaître dans la clause SELECT mais cette possibilité n'est jamais garantie.
Attention : la clause ORDER BY est la dernière clause de tout ordre SQL et ne doit figurer qu'une seule fois dans le SELECT, même s'il existe des requêtes imbriquées ou un jeu de requêtes ensemblistes.
Voici un exemple illustrant tous les types de clauses.
Exemple : liste des loyers toutes charges comprises des locataires à Lille par ordre alphabétique.
SELECT NomClt, NumAppart, [loyerHC]
+ charges [AS LoyerTCC]
3 champs à projeter
dont un champ calculé
FROM CLIENT, APPARTEMENT
Tables utiles à la requête
WHERE CLIENT.NumAppart =
APPARTEMENT. NumAppart
Jointures entre les 2 tables
AND VilleAppart = « Lille »
Restriction aux clients de Lille
ORDER BY NomClt ASC
Tri par ordre alphabétique du nom.
L’utilité d’un LID est de réaliser des combinaisons d’opérations sur différentes tables. L’utilisation des clauses, même celles dîtes optionnelles, est importante. La clause SELECT permet d’extraire des données d’une base ou calculer de nouvelles données à partir d’existantes. La clause FROM permet de renommer une table. Les clauses WHERE et ORDER BY permettent, successivement, de filtrer et de trier ces mêmes données.
Des quiz et exercices pour mieux assimiler sa leçon
La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.
Des exercices variés pour ne pas s’ennuyer
Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !
Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.
Des quiz pour une évaluation en direct
Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.
myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.
Des vidéos et des podcasts pour apprendre différemment
Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.
Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !
Des podcasts pour les révisions
La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.
Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.
Des vidéos de cours pour comprendre en image
Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !