Aller au contenu

Requêtes SQL sur une seule table

18 janvier 2026 · Prépa Booster

Cours complet – Bases du langage SQL

Introduction

Les bases de données relationnelles sont aujourd’hui au cœur de la majorité des systèmes informatiques : applications web, logiciels métiers, systèmes scientifiques ou administratifs.
Le langage SQL (Structured Query Language) est le langage standard permettant d’interroger ces bases de données.

Dans ce cours, nous nous concentrons sur les requêtes SQL portant sur une seule table.
L’objectif est de savoir extraire, filtrer, trier et agréger des données contenues dans une table existante, sans aborder la création ou la modification de tables.


I. Vocabulaire fondamental des bases de données relationnelles

1. Tables et relations

Étant donnés des ensembles ($E_1, E_2, \ldots, E_n$), on appelle table (ou relation) tout sous-ensemble de
$ E_1 \times E_2 \times \cdots \times E_n $

Autrement dit, une table est un ensemble de n-uplets.
Une base de données relationnelle est simplement un ensemble de tables.

2. Enregistrements, attributs et domaines

  • Un enregistrement (ou ligne) correspond à un n-uplet de la table
  • Un attribut (ou colonne) désigne un des champs de la table
  • Le domaine d’un attribut correspond au type des valeurs qu’il peut prendre

Exemple : table des éléments chimiques

On considère une table tableau représentant la classification de Mendeleïev, de schéma :

nomnuméro_atomiquesymbolecolonnelignebloc
Hydrogène1H11s
Hélium2He181s
Lithium3Li12s
Béryllium4Be2(IIA)2s
  • Un enregistrement est par exemple :
    (Hydrogène, 1, H, 1, 1, s)
  • Les attributs sont : nomnuméro_atomiquesymbolecolonnelignebloc
  • Les domaines :
    • chaînes de caractères : nomsymbolecolonnebloc
    • entiers : numéro_atomiqueligne

⚠️ Dans le programme, les domaines sont limités aux entiers, flottants et chaînes de caractères.
Les dates peuvent être représentées comme des chaînes de la forme aaaa/mm/jj.


3. Clé primaire

Une clé primaire est un attribut (ou un ensemble d’attributs) permettant d’identifier de façon unique un enregistrement.

Exemple

Dans la table tableau, les attributs suivants peuvent être clés primaires :

  • numéro_atomique
  • symbole

Exemple hospitalier

Table patients :

prenomnomnumero_secu
JeanDupont1221233052555
MarieDupond2221275265875

Table operations :

idnomnumero_secudate_operationchirurgien
1Dupont12212330525552022/12/05Dr Durand
2Dupond22212752658752022/12/06Dr Durand
  • numero_secu est clé primaire dans patients
  • Il ne peut pas l’être dans operations
  • On introduit alors un attribut artificiel id comme clé primaire

⚠️ Les enregistrements d’une table ne sont pas ordonnés.
La clé primaire garantit leur unicité.


II. Bases du langage SQL

L’objectif principal de SQL est de rechercher des informations contenues dans les tables à l’aide de requêtes.


1. Projection : sélectionner des colonnes

La projection permet de choisir les attributs que l’on souhaite afficher.

SELECT attribut1, attribut2, ... FROM table;

Cette requête produit une nouvelle table ne contenant que les colonnes demandées.

Exemples

SELECT * FROM tableau;

→ renvoie tous les attributs et tous les enregistrements

SELECT nom, symbole FROM tableau;

→ renvoie le nom et le symbole de chaque élément chimique

Éliminer les doublons : DISTINCT

SELECT DISTINCT ligne, bloc FROM tableau;

Sans DISTINCT, plusieurs lignes identiques peuvent apparaître.


2. Sélection : filtrer les lignes (WHERE)

La sélection permet de ne conserver que les enregistrements satisfaisant une condition.

SELECT attributs FROM table WHERE condition;

Opérateurs utilisables

  • Comparaison : =<><<=>>=
  • Opérations arithmétiques : +-*/
  • Logique : ANDORNOT

Exemples

SELECT nom, symbole FROM tableau WHERE ligne = 2;

→ éléments situés sur la deuxième ligne du tableau périodique

SELECT symbole 
FROM tableau 
WHERE numero_atomique < 20 AND symbole <= 'D';

→ symboles commençant par A, B, C ou D, de numéro atomique < 20


3. Renommage avec AS (alias)

Les alias permettent de renommer temporairement des colonnes ou des tables.

SELECT symbole, numero_atomique AS n FROM tableau WHERE n < 20;

La clause AS est facultative :

SELECT symbole, numero_atomique n FROM tableau WHERE n < 20;

Les alias sont indispensables lorsque :

  • les noms sont longs
  • plusieurs tables contiennent des attributs identiques (vu plus tard)

4. Options d’affichage

Trier les résultats : ORDER BY

SELECT symbole, numero_atomique 
FROM tableau 
WHERE ligne = 3 
ORDER BY bloc;

Par défaut, le tri est croissant (ordre lexicographique pour les chaînes).


Limiter le nombre de résultats : LIMIT et OFFSET

SELECT symbole FROM tableau LIMIT 4 OFFSET 1;

→ renvoie 4 résultats à partir du 2ᵉ enregistrement

⚠️ Sans ORDER BY, l’ordre peut être imprévisible.


III. Fonctions d’agrégation

Les fonctions d’agrégation permettent d’effectuer un calcul sur un ensemble d’enregistrements.

FonctionRôle
COUNTCompte les enregistrements
AVGMoyenne
MINMinimum
MAXMaximum
SUMSomme

1. Utilisations simples

SELECT f(attribut) FROM table;

Exemples

SELECT COUNT(*) FROM tableau;

→ nombre total d’éléments

SELECT COUNT(DISTINCT ligne) FROM tableau;

→ nombre de lignes différentes (7)

SELECT SUM(numero_atomique) FROM tableau WHERE ligne = 2;

→ somme des numéros atomiques de la ligne 2


2. Regroupements : GROUP BY

La clause GROUP BY permet d’appliquer une fonction d’agrégation par groupes.

SELECT AVG(numero_atomique) FROM tableau GROUP BY ligne;

→ moyenne par ligne du tableau périodique


WHERE avant GROUP BY

SELECT MAX(numero_atomique), MIN(numero_atomique) 
FROM tableau 
WHERE ligne > 3 
GROUP BY bloc;

Filtrage après agrégation : HAVING

SELECT SUM(numero_atomique) 
FROM tableau 
GROUP BY ligne 
HAVING COUNT(*) > 8;

→ lignes contenant au moins 9 éléments

SELECT bloc, COUNT(DISTINCT colonne), MAX(numero_atomique) AS M
FROM tableau
WHERE ligne > 2
GROUP BY bloc
HAVING M < 100;

Différence fondamentale entre WHERE et HAVING

  • WHERE filtre les lignes avant l’agrégation
  • HAVING filtre les groupes après l’agrégation

❌ HAVING ne peut pas être utilisé sans GROUP BY


Conclusion

Les requêtes SQL sur une seule table constituent la base indispensable de toute manipulation de données relationnelles.
La maîtrise de SELECTWHEREORDER BYGROUP BY et des fonctions d’agrégation permet déjà de répondre à une grande majorité de problématiques concrètes.

Ce socle sera réutilisé et étendu dans l’étude des requêtes multi-tables, des jointures et des sous-requêtes.

La deuxième partie du cours : Requêtes SQL sur plusieurs tables

FAQ – Requêtes SQL sur une seule table

Qu’est-ce qu’une requête SQL sur une seule table ?

Une requête SQL sur une seule table est une instruction qui permet d’extraire, filtrer ou organiser les données contenues dans une table unique d’une base de données relationnelle, sans utiliser de jointure.

À quoi sert la commande SELECT en SQL ?

La commande SELECT permet de choisir les colonnes que l’on souhaite afficher à partir d’une table. Elle constitue la base de toutes les requêtes SQL.

Quelle est la différence entre SELECT et SELECT DISTINCT ?

SELECT affiche toutes les lignes correspondant à la requête, y compris les doublons. SELECT DISTINCT permet d’éliminer les lignes identiques dans le résultat.

Comment filtrer des lignes en SQL ?

Pour filtrer des lignes, on utilise la clause WHERE, qui permet de ne conserver que les enregistrements satisfaisant une condition logique ou arithmétique.

Quels opérateurs peut-on utiliser dans une clause WHERE ?

Dans une clause WHERE, on peut utiliser les opérateurs de comparaison (=, <, >, <=, >=, <>), les opérateurs logiques (AND, OR, NOT) ainsi que les opérations arithmétiques (+, -, *, /).

Comment trier les résultats d’une requête SQL ?

La clause ORDER BY permet de trier les résultats d’une requête SQL selon une ou plusieurs colonnes, par ordre croissant ou décroissant.

À quoi servent LIMIT et OFFSET en SQL ?

LIMIT permet de restreindre le nombre de résultats affichés, tandis que OFFSET permet d’ignorer les premiers résultats, ce qui est notamment utile pour la pagination.

Qu’est-ce qu’une fonction d’agrégation en SQL ?

Une fonction d’agrégation permet d’effectuer un calcul sur un ensemble d’enregistrements, comme COUNT, SUM, AVG, MIN ou MAX.

Quelle est la différence entre WHERE et HAVING ?

La clause WHERE filtre les lignes avant l’application des fonctions d’agrégation, tandis que la clause HAVING filtre les groupes après l’utilisation de GROUP BY.

Peut-on utiliser GROUP BY sans fonction d’agrégation ?

Non. En SQL, la clause GROUP BY doit obligatoirement être utilisée avec au moins une fonction d’agrégation.

Pourquoi utiliser des alias avec AS en SQL ?

Les alias permettent de renommer temporairement une colonne ou une table afin de rendre les requêtes SQL plus lisibles et plus faciles à manipuler.

Ce cours de SQL est-il suffisant pour les concours et examens ?

Oui. Ce cours couvre l’ensemble des requêtes SQL sur une seule table attendues en CPGE, à l’université et dans les premières années d’école d’ingénieurs. Le lien vers la deuxième partie de ce cours, concernant les requêtes multi-tables, également au programme des concours CPGE, est donné dans la conclusion.

Commentaires

Publier un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *