Lycée   >   Terminale STMG   >   Sciences de gestion et numérique   >   Langage d'interrogation des données (LID)

Langage d'interrogation des données (LID)

  • Fiche de cours
  • Quiz
  • Profs en ligne
Objectifs : qu’est-ce permet un langage d’interrogation de données ? Qu’est-ce qu’une commande SELECT, une clause FROM, WHERE, ORDER BY ?

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.

1. La commande SELECT et la clause FROM
• Le SELECT est la commande de base du SQL destinée à extraire des données d’une base ou calculer de nouvelles données à partir d’existantes. La syntaxe est la suivante :

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

2. Les clauses WHERE et ORDER BY
• La clause WHERE est un filtre sur les données, ce qui permet soit d’effectuer des jointures ou des restrictions. La syntaxe est la suivante :
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’essentiel

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.

Comment as-tu trouvé ce cours ?

Évalue ce cours !

 

Question 1/5

La médiane de 6 notes est 13. Cela signifie que :

Question 2/5

On a obtenu la série statistique suivante :

Combien vaut la médiane ?

Question 3/5

On a obtenu la série ci-dessous :

Quelle est la médiane de cette série ?

Question 4/5

On a relevé les tailles en cm des élèves d’une classe :

 

Parmi les propositions suivantes, laquelle est vraie ?

Question 5/5

Les notes en français de deux classes littéraires sont données dans le tableau suivant :

Quelle est la note médiane ?

Vous avez obtenu75%de bonnes réponses !

Recevez l'intégralité des bonnes réponses ainsi que les rappels de cours associés :

Votre adresse e-mail sera exclusivement utilisée pour vous envoyer notre newsletter. Vous pourrez vous désinscrire à tout moment, à travers le lien de désinscription présent dans chaque newsletter. Pour en savoir plus sur la gestion de vos données personnelles et pour exercer vos droits, vous pouvez consulter notre charte.

Une erreur s'est produite, veuillez ré-essayer

Consultez votre boite email, vous y trouverez vos résultats de quiz!

Découvrez le soutien scolaire en ligne avec myMaxicours

Le service propose une plateforme de contenus interactifs, ludiques et variés pour les élèves du CP à la Terminale. Nous proposons des univers adaptés aux tranches d'âge afin de favoriser la concentration, encourager et motiver quel que soit le niveau. Nous souhaitons que chacun se sente bien pour apprendre et progresser en toute sérénité ! 

Fiches de cours les plus recherchées

Sciences de gestion et numérique

Langage de contrôle de données (LCD)

Sciences de gestion et numérique

Approche des processus organisationnels

Sciences de gestion et numérique

Gestion du projet de système d'information

Sciences de gestion et numérique

Justification économique d'un projet d'évolution de système d'information

Sciences de gestion et numérique

Les normes associées aux réseaux informatiques : TCP/IP

Sciences de gestion et numérique

Organisation du projet

Sciences de gestion et numérique

Suivi du projet

Sciences de gestion et numérique

La modélisation des processus (le modèle événement-résultat)

Sciences de gestion et numérique

Généralités sur les réseaux pour le SI de l'organisation

Sciences de gestion et numérique

Adressage Internet Protocol