Leçon 1.4 · Temps de lecture : ~8 min
Les types de données définissent les valeurs qu'une colonne peut contenir dans une base relationnelle. Dans cette leçon, vous allez apprendre les types SQL les plus courants, comprendre quand utiliser chacun d'eux, et voir comment un bon choix améliore la qualité des données, le stockage et les performances des requêtes.
Dans la leçon précédente, nous avons vu les tables, les clés, les contraintes et ACID. Nous passons maintenant à une décision de conception essentielle: choisir le bon type de données pour chaque colonne.

Avant d'entrer dans les sous-types, voici les grandes familles de types SQL:
TINYINT, INT, BIGINT, DECIMAL, FLOATCHAR, VARCHAR, TEXTDATE, TIME, DATETIME, TIMESTAMPBOOLEAN, BLOB, JSONLes types numériques stockent des nombres, mais chaque famille répond à un besoin différent:
Les types entiers stockent des valeurs sans partie décimale.
| Type | Taille typique | Plage signée approximative |
|---|---|---|
TINYINT | 1 octet | -128 à 127 |
SMALLINT | 2 octets | -32 768 à 32 767 |
INTEGER / INT | 4 octets | -2 147 483 648 à 2 147 483 647 |
BIGINT | 8 octets | -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807 |
Les bornes exactes varient selon le SGBD et le support signed/unsigned.
DECIMAL stocke des valeurs exactes avec une précision fixe.
DECIMAL(p, s):p = nombre total de chiffres,s = nombre de chiffres après la virgule.DECIMAL(10, 2) permet des valeurs jusqu'à 99 999 999,99.Les types flottants stockent des valeurs approximatives.
DOUBLE offre généralement plus de précision que FLOAT.Les types texte diffèrent surtout par leur stratégie de longueur et de stockage.
CHAR(10) réserve toujours 10 caractères.VARCHAR(255) stocke uniquement les caractères réellement saisis.Les types temporels doivent être utilisés dès qu'une colonne représente une date, une heure ou un instant d'événement.
Stocke uniquement la date (année, mois, jour).
Stocke uniquement l'heure (heure, minute, seconde).
Stocke date et heure ensemble.
Selon le SGBD, TIMESTAMP peut être lié au fuseau horaire alors que DATETIME reste souvent neutre. Vérifiez ce comportement avant de concevoir des tables d'audit et d'événements.
La plupart des bases relationnelles proposent aussi des types spécialisés:
BOOLEAN: valeurs vrai/faux.BLOB: contenu binaire (images, fichiers).JSON: documents semi-structurés JSON.Checklist pratique:
DECIMAL pour les montants financiers, pas FLOAT.VARCHAR pour le texte variable et CHAR pour les formats fixes.Un bon choix de type au départ réduit les migrations futures, les erreurs applicatives et les régressions de performance.
Points clés de cette leçon :
CHAR, VARCHAR et TEXT se choisissent selon la longueur attendue et le comportement de stockage.DATE, TIME ou TIMESTAMP plutôt que du texte.DECIMAL stocke des valeurs exactes et convient aux montants financiers. FLOAT stocke des valeurs approximatives et peut introduire des écarts d'arrondi.
Dans la plupart des cas, utilisez VARCHAR, car la longueur est variable. CHAR est plus adapté aux champs de longueur fixe, comme certains codes.
Non. NULL représente une valeur absente ou inconnue. C'est un marqueur spécial, pas un type de données.
Évaluez la plage de valeurs attendue et choisissez le plus petit type qui la couvre sans risque. Cela réduit l'espace utilisé et évite les dépassements.
Parce que DECIMAL conserve une précision exacte et évite les erreurs d'arrondi des types en virgule flottante.
Vous pouvez rencontrer des erreurs de conversion, des tris/filtres incorrects, un stockage inutilement lourd, des requêtes plus lentes et une logique applicative plus fragile.