CodeGym /Cours /SQL SELF /Types de données numériques : INTEGER,

Types de données numériques : INTEGER, NUMERIC, FLOAT

SQL SELF
Niveau 15 , Leçon 1
Disponible

Aujourd'hui, on va parler des types de données numériques dans PostgreSQL. Si tu t'es déjà demandé comment stocker le nombre "42", faire des calculs financiers ou, genre, des millisecondes — t'es au bon endroit. On va voir quel type choisir pour chaque cas, histoire que toi et tes données soyez à l'aise.

Les types numériques dans PostgreSQL se divisent en trois grandes familles :

  1. Nombres entiers (INTEGER) : pour stocker des nombres sans partie décimale. Genre les classiques 1, 42, -7.
  2. Nombres exacts (NUMERIC) : pour stocker des nombres avec un nombre fixe de chiffres après la virgule. Super utile pour les calculs financiers, où la précision c'est la vie.
  3. Nombres à virgule flottante (REAL) : pour stocker des nombres qui peuvent être énormes ou minuscules. Moins précis que NUMERIC, mais parfaits pour les calculs scientifiques.

Type INTEGER

INTEGER — c'est le type pour les nombres entiers. Parfait quand t'as besoin de stocker des nombres sans décimales. PostgreSQL propose trois variantes de INTEGER pour couvrir différents intervalles :

  • SMALLINT : petit entier. Intervalle : de -32 768 à 32 767.
  • INTEGER (ou INT) : entier standard. Intervalle : de -2 147 483 648 à 2 147 483 647.
  • BIGINT : pour les très grands nombres. Intervalle : de -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807.

Imaginons qu'on a une table students où on stocke des infos sur les étudiants : leur nom, âge et le nombre de crédits (points académiques) :

id name age credits
1 Otto Nate 21 30
2 Maria Chi 22 45
3 Peter Val 20 60
4 Anna Song 23 50
5 Sophie Zhang 21 35

Maintenant, on fait une requête SQL simple pour avoir la liste des étudiants avec leur âge et le nombre de crédits :

SELECT name, age, credits
FROM students;

Résultat :

name age credits
Otto Nate 21 30
Maria Chi 22 45
Peter Val 20 60
Anna Song 23 50
Sophie Zhang 21 35

Quand utiliser INTEGER ?

  • Pour stocker des identifiants (id, numéro de commande).
  • Pour stocker des quantités (genre le nombre d'articles en stock, le nombre d'étudiants).

Type NUMERIC

NUMERIC — c'est le type pour les nombres exacts à virgule fixe. Si tu dois stocker un truc genre 123.456, et qu'une erreur sur un chiffre après la virgule peut te coûter ta réputation (ou ton fric), prends NUMERIC.

Format de déclaration : NUMERIC(precision, scale), où :

  • precision — nombre total de chiffres (avant et après la virgule).
  • scale — nombre de chiffres après la virgule.

Par exemple, NUMERIC(6, 2) permet de stocker des nombres avec max 6 chiffres, dont 2 après la virgule.

Créons une table pour gérer les transactions financières :

id description amount
1 Paiement pour les études 2345.67
2 Bourse mensuelle 500.00
3 Frais de laboratoire 145.99
4 Amende bibliothèque 12.75
5 Inscription à la conférence 320.50

Maintenant, affichons la liste des transactions :

SELECT description, amount
FROM transactions;

Résultat :

description amount
Paiement pour les études 2345.67
Bourse mensuelle 500.00
Frais de laboratoire 145.99
Amende bibliothèque 12.75
Inscription à la conférence 320.50

Quand utiliser NUMERIC ?

  • Calculs financiers (prix des articles, salaires).
  • Stocker des mesures précises (poids, longueur).

Table measurements

id mass - REAL height - REAL
1 70.5 1.83
2 64.2 1.75
3 82.3 1.92
4 55.0 1.60

Maintenant, affichons les valeurs :

SELECT mass, height
FROM measurements;

Résultat :

mass height
70.5 1.83
64.2 1.75
82.3 1.92
55.0 1.60

Quand utiliser REAL ?

  • Calculs scientifiques (masse des atomes, distance à la Lune).
  • Modélisation de données où les erreurs sont acceptables.

Comparaison des types numériques : quand utiliser quoi ?

Type de données Intervalle Précision Exemples d'utilisation
SMALLINT -32 768 à 32 767 Nombres entiers Petits nombres (âge, notes).
INTEGER -2 147 483 648 à 2 147 483 647 Nombres entiers Identifiants, quantités.
BIGINT -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807 Nombres entiers Très grands nombres.
NUMERIC Dépend de precision et scale Nombres décimaux exacts Finance, mesures.
REAL Environ 6 chiffres décimaux Virgule flottante Données approximatives ou scientifiques.
DOUBLE PRECISION Environ 15 chiffres décimaux Virgule flottante haute précision Science, recherche.

Alias

Dans PostgreSQL, beaucoup de types numériques ont des alias — c'est des noms alternatifs pour les types, qui se comportent pareil mais rendent le code plus lisible ou compatible avec d'autres SGBD.

Voilà un petit guide rapide sur les alias des types numériques dans PostgreSQL :

Alias pour les types entiers

Alias Type réel Taille Intervalle
INT INTEGER 4 octets −2 147 483 648 à 2 147 483 647
INT4 INTEGER 4 octets (alias obsolète)
SMALLINT SMALLINT 2 octets −32 768 à 32 767
INT2 SMALLINT 2 octets
BIGINT BIGINT 8 octets −9 quintillions à +9 quintillions
INT8 BIGINT 8 octets

Alias pour les nombres exacts

Alias Type réel Utilisation
DEC NUMERIC Synonyme selon le standard SQL
DECIMAL NUMERIC Pareil

Alias pour les nombres à virgule flottante

Alias Type réel Précision
FLOAT DOUBLE PRECISION ~15 chiffres (par défaut)
FLOAT(24) REAL ~6 chiffres
FLOAT(53) DOUBLE PRECISION ~15 chiffres
FLOAT8 DOUBLE PRECISION Alias obsolète
FLOAT4 REAL Alias obsolète

Erreurs classiques

Quand tu bosses avec les types numériques, tu peux tomber sur quelques pièges :

Choisir un type de données trop petit. Si tu utilises SMALLINT pour l'âge des gens, c'est pas ouf. Le robot de "Matrix" qui a des millions d'années va être vexé.

Perte de données à cause de l'arrondi. Si tu utilises REAL pour des calculs financiers, tu risques de perdre des centimes. Et après, la confiance des clients aussi.

Comparer des types différents. Si tu compares INTEGER et REAL, tu peux avoir des résultats chelous à cause de la façon dont les nombres à virgule flottante sont stockés.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION