SQL92, MySQL, PostgreSQL permettent l'utilisation d'un grand nombre de types numériques. Selon les valeurs possibles que nous risquons de retrouver dans notre champ de base de données, nous préférerons tel ou tel type, mais à chaque fois en tentant d'utiliser le type qui nécessite le moins de place.
| Nom du type | Description | Valeur min | Valeur max | Taille |
|---|---|---|---|---|
| TINYINT (MySQL) | Entier très petit | -128 | + 127 | 1 octet |
| TINYINT UNSIGNED (MySQL) | Entier positif très petit | 0 | + 255 | 1 octet |
| SMALLINT (SQL92) | Entier petit | - 32768 | + 32767 | 2 octets |
| INT2 UNSIGNED (SQL92) | Entier positif petit | 0 | + 65535 | 2 octets |
| MEDIUMINT (MySQL) | Entier moyen | - 8388608 | + 8388607 | 3 octets |
| MEDIUMINT UNSIGNED (MySQL) | Entier positif moyen | 0 | + 16777215 | 3 octets |
| INT (SQL92) ou INTEGER | Entier standard | - 2147483648 | + 2147483647 | 4 octets |
| INT UNSIGNED (SQL92) | Entier positif standard | 0 | + 4294967295 | 4 octets |
| INT4 (PostgreSQL) | Entier standard | - 2147483648 | + 2147483647 | 4 octets |
| INT4 UNSIGNED (PostgreSQL) | Entier positif standard | 0 | + 4294967295 | 4 octets |
| BIGINT (MySQL) | Entier grand | - 9223372036854775808 | + 9223372036854775807 | 8 octets |
| BIGINT UNSIGNED (MySQL) | Entier positif grand | 0 | + 18446744073709551615 | 8 octets |
| INT8 (PostgreSQL) | Entier grand | - 9223372036854775808 | + 9223372036854775807 | 8 octets |
| INT8 UNSIGNED (PostgreSQL) | Entier positif grand | 0 | + 18446744073709551615 | 8 octets |
| FLOAT(X) (SQL92) | Nombre à virgule flottante | de - 3.402823466E+38 | à - 1.175494351E-38 | 4 octets ou 8 octets |
| Remarque : les valeurs entre -1.175494351E-38 et +1.175494351E-38 ne sont pas possibles, car il existe deux zones de part et d'autre de la valeur zéro que nous ne pouvons représenter. | ||||
| et de + 1.175494351E-38 | à + 3.402823466E+38 | |||
| Par défaut, taille de 4 octets (X est dans l'intervalle 0 à 24), mais 2 paramétres optionnels peuvent renseigner la taille de l'affichage, et le nombre de décimales. X peut valoir <=24 pour une précision simple, et entre 25 et 53 pour une précision double. Si UNSIGNED est spécifié, les valeurs négatives sont interdites. | ||||
| DOUBLE, REAL (SQL92) | Décimal de double précision | de - 1.7976931348623157E+308 | à - 2.2250738585072014E-308 | 8 octets |
| et de + 2.2250738585072014E-308 | é + 1.7976931348623157E+308 | |||
| DECIMAL, NUMERIC | Décimal sous forme de chaîne | toute valeur de 5 chiffres et 2 décimales | variable | |
Lorsque MySQL doit stocker une valeur qui est hors de l'intervalle de validité d'une colonne, il ramène la valeur à la plus proche possible, et stocke cette valeur. Par exemple, l'intervalle de validité d'une colonne d'entiers INT va de -2147483648 à 2147483647. Si vous essayez d'insérer -9999999999 dans une colonne de ce type, la valeur sera ramenée à la plus proche possible, c'est à dire -2147483648. De même, si vous essayez d'insérer 9999999999, 2147483647 sera stocké à la place.
BIT, BOOL, BOOLEAN
Ce sont des synonymes de TINYINT(1). Le synonyme BOOLEAN a été ajouté en version 4.1.0
DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]
Ce sont des synonymes pour DOUBLE.
| Ajout de paramètres | |
|---|---|
| Paramètre | Affichage |
| INT | 12 |
| INT ZEROFILL | 0000000012 |
| INT(4) ZEROFILL | 0012 |
Si nous spécifions l'option ZEROFILL pour une valeur numérique, MySQL va automatiquement ajouter l'attribut UNSIGNED à la colonne.
| Nom du type | Description | Valeurs | Taille |
|---|---|---|---|
| CHARACTER(X) (SQL92) | Chaîne de caractères fixe | 255 c. max. | 1 octet |
| CHAR (PostgreSQL) | Chaîne de caractères fixe | 255 c. max. | 1 octet |
| CHAR(X) (PostgreSQL) | Chaîne de caractères fixe | L = X <= 255 complétés par des espaces si nécessaire | 4+X |
| CHARACTER VARYING(X) (SQL92) | Chaîne de caractères fixe | L = X <= 255 complétés par des espaces si nécessaire | 4+X |
| CHAR(X) (MySQL) | Chaîne de caractères fixe | L = X <= 255 complétés par des espaces si nécessaire | 4+X |
| VARCHAR(X) (MySQL 4.0.2) | Chaîne de caractères variable | L <= X <= 255 | L +1 octets, avec L <= X et 1 <= X <= 255 |
| VARCHAR(X) (MySQL 5.0.3) | Chaîne de caractères variable | L <= X <= 65535 | L +1 octets, avec L <= X et 1 <= X <= 65535 |
| VARCHAR(X) (PostgreSQL) | Chaîne de caractères variable | L <= X <= 255 | L +1 octets, avec L <= X et 1 <= X <= 255 |
| TINYBLOB, TINYTEXT (MySQL) | Petite zone de texte | 255c. max. | L +1 octets, avec L < 2^8 |
| BLOB, TEXT (MySQL) | Zone de texte standard | 65535c. max. | L +2 octets, avec L < 2^16 |
| TEXT (PostgreSQL) | Zone de texte standard | 65535c. max. | L +2 octets, avec L < 2^16 |
| MEDIUMBLOB, MEDIUMTEXT (MySQL) | Zone de texte moyenne | 16777215c. max. (16 millions) | L +3 octets, avec L < 2^24 |
| LONGBLOB, LONGTEXT (MySQL) | Grande zone de texte | 4294967295c. max. (4 milliards) | L +4 octets, avec L < 2^32 |
| ENUM | Une valeur parmi plusieurs | 65535 valeurs max. | 1 ou 2 octets, suivant le nombre d'éléments |
| SET | Une ou plusieurs valeurs parmi plusieurs | 64 valeurs max. | 1, 2, 3, 4 ou 8 octets, suivant le nombre de membres de l'ensemble |
Les types VARCHAR, BLOB et TEXT sont de longueur variable, et l'espace disque requis dépend de la taille réelle de la valeur présente dans la colonne, et non pas de la taille maximale de la colonne.
Pour stocker des chaînes de caractères, les seules différences entre les colonnes de type BLOB et celles de type TEXT se situent aux niveaux des encodages : BLOB est de type binaire (sensible à la casse) alors que TEXT est de type ASCII (permet de rendre insensible à la casse). Les tris, faits sur les BLOB, contrairement à ceux faits sur les TEXT, tiennent compte de la casse.
L'avantage d'un champ BLOB est que nous pouvons stocker n'importe quoi (une image, un document PDF, etc.).
Quand une valeur CHAR est enregistrée, elle est complétée à droite avec des espaces jusqu'à atteindre la valeur fixée. Quand une valeur de CHAR est lue, les espaces en trop sont retirés.
Les valeurs contenues dans les colonnes de type VARCHAR sont de tailles variables. Nous pouvons déclarer une colonne VARCHAR pour que sa taille soit comprise entre 1 et 255, exactement comme pour les colonnes CHAR. Par contre, contrairement à CHAR, les valeurs de VARCHAR sont stockées en utilisant autant de caractères que nécessaire, plus un octet pour mémoriser la longueur. Les valeurs ne sont pas complétées. Au contraire, les espaces finaux sont supprimés avant stockage.
L'attribut BINARY signifie que les valeurs sont classées et triées en tenant compte de la casse, suivant l'ordre des caractères ASCII de la machine ou est installé le serveur MySQL. BINARY n'affecte pas les méthodes de lecture et de stockage des valeurs.
Si nous assignons une valeur trop grande à une colonne de type CHAR, VARCHAR, BLOB ou TEXT, la valeur sera tronquée à la taille maximale possible.
| Nom du type | Description | Valeur min | Valeur max | Taille |
|---|---|---|---|---|
| YEAR (MySQL) | Année (ex: 2012) | 1901 | 2155 | 1 octet |
| DATE (MySQL) | Date AAAA-MM-JJ (ex: 2012-06-03) | 1 Janvier 1000 | 31 Décembre 9999 | 3 octets |
| DATE (PostgreSQL) | Date AAAA-MM-JJ (ex: 2012-06-03) | 4713 Av.JC | 32767 | 3 octets |
| TIME (PostgreSQL) | Heure HH:MM:SS (ex: 11:43:30) | 00h00m00s00 | 23h59m59s99 | 3 octets |
| TIME (MySQL) | Heure HH:MM:SS (ex: 11:43:30) | -838h59m59s | 838h59m59s | 3 octets |
| TIMESTAMP (MySQL) | AAAAMMJJHHMMSS (ex: 1338716610) | 1 Janvier 1970 00h00m00s | 1465001 | 4 octets |
| TIMESTAMP (PostgreSQL) | AAAAMMJJHHMMSS (ex: 1338716610) | 4713 Av.JC | 1465001 | 4 octets |
| DATETIME (MySQL) | Date et heure AAAA-MM-JJ HH:MM:SS (ex: 2012-06-03 11:43:30) | 1 Janvier 1000 00h00m00s | 31 Décembre 9999 23h59m59s | 8 octets |
| INTERVAL (PostgreSQL) | -178000000 | 178000000 | 12 octets |
Pour les champs DATE, DATETIME et TIMESTAMP nous pouvons spécifier les formats suivants :
Les valeurs spécifiées sous forme de nombres doivent avoir 6, 8, 12, ou 14 chiffres de long. Si le nombre a 8 ou 14 chiffres, MySQL suppose que le format est AAAAMMJJ ou AAAAMMJJHHMMSS (respectivement) et que l'année est représentées par les 4 premiers chiffres. Si le nombre a 6 ou 12 chiffres, MySQL suppose que le format est AAMMJJ ou AAMMJJHHMMSS (respectivement) et format et que l'année est représentées par les 2 premiers chiffres. Les nombres qui ne sont pas d'une taille valide, sont complétés avec des 0 jusqu'à la taille lisible la plus proche.
Pour plus d'informations sur la gestion du timestamp, vous pouvez consulter la page consacrée aux conversions entre les formats timestamp et date en PHP.
De plus, un outil de conversion en ligne y est présent.
Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.
24 mots clés dont 0 définis manuellement (plus d'information...).
Avertissement
Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.
Column Types(version 20/02/10)
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.
Recherche (afficher)
Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
Citation (masquer)