| Les candidats doivent être capables de : | Notes et orientations |
|---|---|
| 1 Définir une base de données à table unique à partir de besoins de stockage de données donnés | • Y compris : – champs – enregistrements – validation |
| 2 Suggérer des types de données de base appropriés | • Y compris : – texte/alphanumérique – caractère – Booléen – entier – réel – date/heure |
| 3 Comprendre la fonction d'une clé primaire et identifier une clé primaire appropriée pour une table de base de données donnée | |
| 4 Lire, comprendre et compléter des scripts SQL (Structured Query Language) pour interroger des données stockées dans une table de base de données unique | • Limité à : – SELECT – FROM – WHERE – ORDER BY DESCENDING – ORDER BY ASCENDING – SUM – COUNT – AND – OR • Identification de la sortie donnée par une instruction SQL qui interrogera le contenu donné d'une table de base de données |
Bases de données
Informatique IGCSE · Sujet 9
8:18
Bases de données
Avant les ordinateurs, une bibliothèque gardait un tiroir comme celui-ci. Une carte par livre, contenant chacun les mêmes quelques faits, tous rangés par ordre — afin qu'une bibliothécanière puisse trouver n'importe quel livre…
Narration en anglais · sous-titres en anglais et en 中文 au choix
Programme
Source : Programme Cambridge International
9.1
Qu'est-ce qu'une base de données ?
Une base de données est un entrepôt organisé de données, conçu pour faciliter la recherche, le tri et la mise à jour. Au IGCSE, vous travaillez avec une base de données à table unique — toutes les données sont contenues dans une seule table.


| English | Français |
|---|---|
| unique/juːˈniːk/ | unique |
9.2
Enregistrements et champs
Une table de base de données est constituée d'enregistrements et de champs.
- Un enregistrement correspond à une ligne dans la table — l'ensemble des données concernant un seul élément (par exemple, un élève).
- Un champ est une colonne du tableau : une donnée que possède chaque enregistrement (par exemple « Prénom »).
| StudentID | FirstName | DateOfBirth | FormClass | FeesPaid |
|---|---|---|---|---|
| 1 | Amy | 14/03/2009 | 10A | TRUE |
| 2 | Ben | 02/11/2008 | 10B | FALSE |
Ici, chaque ligne est un enregistrement, et chaque colonne est un champ.

9.3
Types de données pour les champs
Chaque champ stocke un seul type de données. Choisissez le type qui correspond le mieux aux données.

| Type de données | Utilisé pour | Exemple |
|---|---|---|
| texte/alphanumérique | lettres, chiffres et symboles | « 10A », « Amy » |
| caractère | un seul caractère | 'M' |
| booléen | l'une des deux valeurs | VRAI / FAUX |
| entier | un nombre sans décimales | 42 |
| réel | un nombre avec virgule décimale | 3.5 |
| date/heure | une date ou une heure | 14/03/2009 |
Exemple résolu. Choisissez le type de données pour chaque champ d’une table Member.
| Champ | Exemple | Type de données | Pourquoi |
|---|---|---|---|
| MemberID | M0042 | texte | contient une lettre |
| Phone | 07712 345678 | texte | commence par 0 ; jamais utilisé dans des sommes |
| Age | 15 | entier | un nombre entier |
| Fee | 12.50 | réel | possède une décimale |
| Gender | F | caractère | un seul caractère |
| Paid | TRUE | booléen | seulement deux valeurs |
| Joined | 01/09/2025 | date/heure | une date |
Un numéro de téléphone ressemble à un nombre, mais c’est un piège fréquent aux examens : s’il est stocké comme entier, il perd son premier 0, et personne n’additionne des numéros de téléphone.
| English | Français |
|---|---|
| database/ˈdeɪtəbeɪs/ | base de données |
| single-table database/ˈsɪŋɡl ˈteɪbl ˈdeɪtəbeɪs/ | base de données à table unique |
| record/ˈrekɔːd/ | enregistrement |
| field/fiːld/ | champ |
| data type/ˈdeɪtə taɪp/ | type de données |
| text/alphanumeric/tekst ˌælfənjuːˈmerɪk/ | texte/alphanumérique |
| character/ˈkærɪktə/ | caractère |
| Boolean/ˈbuːlɪən/ | valeur booléenne |
| integer/ˈɪntɪdʒə/ | entier |
| real/rɪəl/ | réel |
| date/time/deɪt taɪm/ | date/heure |
| primary key/ˈpraɪməri kiː/ | clé primaire |
9.4
La clé primaire
Une clé primaire est un champ qui contient une valeur unique pour chaque enregistrement. Aucun enregistrement ne peut avoir la même clé primaire, ce qui permet d’identifier précisément un seul enregistrement.
Dans le tableau ci-dessus, StudentID est une bonne clé primaire car chaque élève a un numéro différent. Un champ comme FormClass serait une mauvaise clé primaire, car de nombreux élèves partagent la même classe.
Exemple résolu. Quel champ du tableau Member ci-dessus devrait être la clé primaire ? MemberID, car chaque membre se voit attribuer une valeur différente. Age, Fee et Joined sont répétés ; même un nom comme Surname est un mauvais choix, car plusieurs membres peuvent partager un nom de famille. Une bonne réponse nomme le champ et précise qu'il est unique pour chaque enregistrement.
9.5
Validation dans une base de données
Lorsque les données sont saisies dans une base de données, les validations vérifient qu’elles sont cohérentes — par exemple une contrôle de plage sur un champ d’âge, ou un contrôle de présence pour s’assurer qu’un champ n’est pas laissé vide. (Vous avez vu ces contrôles dans le sujet 7.)

| Champ | Contrôle approprié | Rejeté si |
|---|---|---|
| Age | contrôle de plage, 11 à 18 | 200 |
| Surname | contrôle de présence | un champ vide |
| Phone | contrôle de longueur, 11 caractères | 0771234 |
| Frais | contrôle de type, un nombre | « douze » |
| Joined | contrôle de format, JJ/MM/AAAA | 2025-9-1 |
Exemple corrigé (conception d’une table). Une école de danse souhaite stocker, pour chaque élève : un numéro d’élève, son nom, sa date de naissance, la note de son dernier examen (de 1 à 8), si les frais du trimestre ont été payés et les frais mensuels. Définissez une base de données appropriée constituée d’une seule table.
| Champ | Type de données | Validation |
|---|---|---|
| NuméroÉlève (clé primaire) | texte, par exemple « D0153 » | contrôle de présence ; contrôle de format (D + 4 chiffres) |
| NomÉlève | texte | contrôle de présence |
| DateNaissance | date/heure | contrôle de format, JJ/MM/AAAA |
| DernièreNote | entier | contrôle de plage, de 1 à 8 |
| PayéCeTrimestre | booléen | contrôle de type, TRUE/FALSE |
| FraisMensuels | réel | contrôle de plage, supérieur à 0 |
Donnez un nom à la table (ici Pupil), créez un champ pour chaque donnée, indiquez un type de données pour chaque champ et précisez quel champ est la clé primaire et pourquoi : PupilID est différent pour chaque élève, tandis que deux élèves pourraient avoir le même nom ou la même date de naissance.
| English | Français |
|---|---|
| validation/ˌvælɪˈdeɪʃn/ | validation |
| structured query language/ˈstrʌktʃəd ˈkwɪərɪ ˈlæŋɡwɪdʒ/ | langage de requête structuré |
9.6
Langage de requête structuré (SQL)
Langage de requête structuré (SQL) est un langage utilisé pour interroger une base de données — c'est-à-dire sélectionner les enregistrements souhaités. Vous devez comprendre et exécuter des scripts SQL.
SELECT, FROM et WHERE
SELECTindique quels champs afficher.FROMindique quelle table utiliser.WHEREdéfinit une condition, afin que seuls les enregistrements correspondants soient affichés.

SELECT FirstName, FormClass
FROM Student
WHERE FeesPaid = TRUE;
Cela affiche le prénom et la classe de chaque élève qui a payé ses frais.
Utilisez * pour sélectionner tous les champs :
SELECT *
FROM Student
WHERE FormClass = '10A';
ORDER BY
ORDER BY trie les résultats. Utilisez ASC pour un tri croissant (plus petit d'abord, A→Z) ou DESC pour un tri décroissant (plus grand d'abord, Z→A).
SELECT FirstName, DateOfBirth
FROM Student
ORDER BY DateOfBirth ASC;
AND et OR
Joignez les conditions avec AND (les deux doivent être vraies) ou OR (au moins l'une doit être vraie).
Les conditions utilisent les opérateurs de comparaison suivants :
| Opérateur | Signification | Exemple |
|---|---|---|
= |
égal à | FormClass = '10A' |
<> |
différent de | FormClass <> '10A' |
> et < |
supérieur à, inférieur à | Height > 100 |
>= et <= |
supérieur ou égal à, inférieur ou égal à | Price <= 5.00 |
SELECT FirstName
FROM Student
WHERE FormClass = '10A' AND FeesPaid = FALSE;
SUM et COUNT
SUMadditionne les valeurs d'un champ numérique.COUNTcompte combien d'enregistrements correspondent.
SELECT COUNT(StudentID)
FROM Student
WHERE FeesPaid = FALSE;
Ceci compte combien d'élèves n'ont pas payé. SUM fonctionne de la même manière mais additionne un champ numérique au lieu de compter les lignes.
SELECT SUM(Fee)
FROM Member
WHERE Paid = TRUE;
Cela additionne la Fee de chaque membre ayant payé et affiche un seul nombre. SUM nécessite un champ numérique (entier ou réel) ; COUNT peut compter n'importe quel champ.
Calculer la sortie
Pour trouver la sortie d'un script SQL, lisez-le dans cet ordre :
FROM— quelle table ;WHERE— ne garder que les enregistrements correspondant à la condition ;SELECT— n'afficher que les champs choisis ;ORDER BY— ranger les résultats par ordre.

En suivant ces étapes, vous pouvez noter exactement quelles lignes et quelles colonnes la requête retourne.
Exemple résolu. La table Plant :
| PlantID | Nom | Type | Hauteur | Prix |
|---|---|---|---|---|
| P01 | Rose | arbuste | 120 | 8.50 |
| P02 | Basilic | herbe | 30 | 2.00 |
| P03 | Houx | arbuste | 300 | 15.00 |
| P04 | Menthe | herbe | 40 | 1.50 |
| P05 | Lavande | arbuste | 60 | 6.00 |
Donnez la sortie de :
SELECT Name, Price
FROM Plant
WHERE Type = 'shrub' AND Height < 200
ORDER BY Price DESC;
FROM: le tableauPlant.WHERE: les arbustes sont P01, P03 et P05 ; le houteau mesure 300 de hauteur, donc seule la rose et la lavande passent le filtre.SELECT: seulesNameetPrice.ORDER BY Price DESC: du prix le plus élevé au plus bas.
| Nom | Prix |
|---|---|
| Rose | 8.50 |
| Lavande | 6.00 |
SELECT COUNT(PlantID) FROM Plant WHERE Type = 'herb'; produirait 2, et SELECT SUM(Price) FROM Plant WHERE Type = 'herb'; produirait 3.50.
Avec OU, davantage d’enregistrements sont retenus : SELECT Name FROM Plant WHERE Type = 'herb' OR Price > 10; donne le basilic, le houx et la menthe (les deux herbes, ainsi que le houx parce que son prix est supérieur à 10). Un enregistrement qui satisfait aux deux conditions n’est tout de même affiché qu’une seule fois.
Exemple résolu. Une table Book a les champs Title, Author, Price et InStock. Écrivez une requête affichant le titre et le prix de chaque livre d'Orwell disponible, du moins cher au plus cher.
SELECT Title, Price
FROM Book
WHERE Author = 'Orwell' AND InStock = TRUE
ORDER BY Price ASC;
Construisez-la dans l'ordre de lecture : FROM nomme la table ; WHERE garde seulement les enregistrements correspondants, et comme il y a deux conditions, ils ont besoin de AND ; SELECT n'affiche que les deux champs demandés ; ORDER BY … ASC les trie. Les valeurs textuelles vont entre des guillemets, et seuls les champs demandés par la question appartiennent à SELECT - ajouter Author simplement parce que vous l'avez filtrée est le moyen le plus courant de perdre une marque ici.
SELECT … WHERE
Parcourez une requête : WHERE filtre les lignes, SELECT choisit les colonnes.
| English | Français |
|---|---|
| query/ˈkwɪərɪ/ | requête |
| condition/kənˈdɪʃn/ | condition |
| ascending/əˈsendɪŋ/ | croissant |
| descending/dɪˈsendɪŋ/ | décroissant |
9.7
Conseils d'examen
- Un enregistrement est une ligne (toutes les données sur un élément) ; un champ est une colonne (un élément que chaque enregistrement possède).
- Une clé primaire doit être unique pour chaque enregistrement, afin d'identifier exactement un enregistrement (StudentID, pas FormClass).
- Apprenez les parties SQL :
SELECT(quels champs),FROM(quelle table),WHERE(la condition),ORDER BY(tri, ASC ou DESC). - Lisez une requête dans l'ordre FROM → WHERE → SELECT → ORDER BY pour déterminer sa sortie.
COUNTcompte les enregistrements correspondants ;SUMadditionne un champ numérique.- Pour concevoir une table, donnez à chaque champ un nom, un type de données et un contrôle de validation, et justifiez le choix de la clé primaire.
<>signifie « différent de » ; les valeurs textuelles nécessitent des guillemets, contrairement aux nombres et à TRUE/FALSE.
Leçons interactives sur ce sujet
Traversez-le étape par étape, avec des exercices à vérification instantanée.