Création — Nicolas THOREZ 2020/08/04 17:09
Comme la plupart des langages informatiques, SQL définie ses données selon certains types. Lorsqu'on définie une colonne dans une table, on doit définir le type de données qu'elle accueillera. Toutes les données de cette colonnes seront alors du même type, celui qui a été défini. Il est important de bien définir le type de données utilisé, une mauvaise définition pouvant entraîner :
En SQL, on trouvera 3 types de données particuliers :
| Type | Allocation en octets | Valeur minimale | Valeur maximale | UNSIGNED min | UNSIGNED max |
|---|---|---|---|---|---|
TINYINT | 1 | -128 | 127 | 0 | 255 |
SMALLINT | 2 | -32768 | 32767 | 0 | 65535 |
MEDIUMINT | 3 | -8388608 | 8388607 | 0 | 16777215 |
INT, INTEGER | 4 | -2147483648 | 2147483647 | 0 | 4294967295 |
BIGINT | 5 | -9223372036854775808 | 9223372036854775807 | 0 | 18446744073709551615 |
152968 dans un SMALLINT, la valeur réellement stockée sera 32767. Pour -152968, ce sera -32768.
Par défaut, les valeurs des entiers peuvent être positives ou négatives, 0 étant au centre de la plage. En définissant la colonne comme UNSIGNED, 0 devient la valeur minimale de la plage, la plage de valeur négative disparaissant et augmentant d'autant la plage positive.
L'argument ZEROFILL, suivant la définition d'une colonne de type entier, permet d'imposer une taille minimale pour l'affichage des entiers de cette colonne. Cela signifie que si ZEROFILL est renseigné pour un valeur de INT(4), 12345 sera affiché 12345 mais 123 sera affiché 0123. La structure de déclaration pour ZEROFILL est :
TYPE(taille) ZEROFILL
Par exemple :
CREATE TABLE yourtable (x INT(8) ZEROFILL NOT NULL, y INT(8) NOT NULL); INSERT INTO yourtable (x,y) VALUES (1, 1), (12, 12), (123, 123), (123456789, 123456789); SELECT x, y FROM yourtable; +-----------+-----------+ | x | y | +-----------+-----------+ | 00000001 | 1 | | 00000012 | 12 | | 00000123 | 123 | | 123456789 | 123456789 | +-----------+-----------+