Types de données SQL92, MySQL, PostgreSQL
Les types numériques SQL92, MySQL, PostgreSQL
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.
- Avons-nous besoin de stocker des nombres négatifs ?
- Quel est le plus grand nombre que nous devrions stocker ?
- Quel est le plus petit nombre quenous devrions stocker ?
- De quelle précision (nombre de chiffres après la virgule) aurons-nous besoin ?
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 |
Dépassement de valeur
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.
Autres termes de MySQL
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.
Affichage
Paramètre | Affichage |
INT | 12 |
INT ZEROFILL | 0000000012 |
INT(4) ZEROFILL | 0012 |
Dépassement de valeur
Si nous spécifions l'option ZEROFILL pour une valeur numérique, MySQL va automatiquement ajouter l'attribut UNSIGNED à la colonne.
Les types chaînes de caractères SQL92, MySQL, PostgreSQL
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.
Différences entre BLOB et TEXT
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.).
Différences entre CHAR et VARCHAR
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.
Dépassement du nombre de caractères maximum
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.
Les dates SQL92, MySQL, PostgreSQL
Nom du type | Description | Valeur min | Valeur max | Taille |
YEAR (MySQL) | Année (ex: 2024) | 1901 | 2155 | 1 octet |
DATE (MySQL) | Date AAAA-MM-JJ (ex: 2024-12-22) | 1 Janvier 1000 | 31 Décembre 9999 | 3 octets |
DATE (PostgreSQL) | Date AAAA-MM-JJ (ex: 2024-12-22) | 4713 Av.JC | 32767 | 3 octets |
TIME (PostgreSQL) | Heure HH:MM:SS (ex: 04:46:34) | 00h00m00s00 | 23h59m59s99 | 3 octets |
TIME (MySQL) | Heure HH:MM:SS (ex: 04:46:34) | -838h59m59s | 838h59m59s | 3 octets |
TIMESTAMP (MySQL) | AAAAMMJJHHMMSS (ex: 1734839194) | 1 Janvier 1970 00h00m00s | 1465001 | 4 octets |
TIMESTAMP (PostgreSQL) | AAAAMMJJHHMMSS (ex: 1734839194) | 4713 Av.JC | 1465001 | 4 octets |
DATETIME (MySQL) | Date et heure AAAA-MM-JJ HH:MM:SS (ex: 2024-12-22 04:46:34) | 1 Janvier 1000 00h00m00s | 31 Décembre 9999 23h59m59s | 8 octets |
INTERVAL (PostgreSQL) | -178000000 | 178000000 | 12 octets |
Formats de dates
Pour les champs DATE, DATETIME et TIMESTAMP nous pouvons spécifier les formats suivants :
- Chaînes avec délimiteurs
- 'AAAA-MM-JJ HH:MM:SS' ou 'AA-MM-JJ HH:MM:SS'.
Syntaxe plus souple : tout caractère de ponctuation peut être utilisé comme délimiteur entre les parties de temps.
Par exemple, '24-12-22 04:46:34', '24.12.22 04+46+34', '24/12/22 04*46*34', et '24@12@22 04^46^34' sont équivalents. - 'AAAA-MM-JJ' ou 'AA-MM-JJ'.
Syntaxe plus souple : même remarque; '24-12-22', '24.12.22', '24/12/22', et '24@12@22' sont équivalent.
- 'AAAA-MM-JJ HH:MM:SS' ou 'AA-MM-JJ HH:MM:SS'.
- Chaînes sans délimiteurs
- 'AAAAMMJJHHMMSS' ou 'AAMMJJHHMMSS', en supposant qu'une telle chaîne ait un sens en terme de date.
Par exemple '20241222044634', et '241222044634' sont interprétés comme '2024-12-22 04:46:34', mais '20241222049034' est invalide (les minutes ne sont pas valides) et devient alors '0000-00-00 00:00:00'. - 'AAAAMMJJ' ou 'AAMMJJ', en supposant qu'une telle chaîne ait un sens en terme de date.
Par exemple, '20241222', et '241222' sont interprétés comme '2024-12-22', mais '20243222' est invalide (les mois ne sont pas valides) et devient alors '0000-00-00'.
- 'AAAAMMJJHHMMSS' ou 'AAMMJJHHMMSS', en supposant qu'une telle chaîne ait un sens en terme de date.
- Nombres
- AAAAMMJJHHMMSS ou AAMMJJHHMMSS, en supposant qu'un tel nombre ait un sens en terme de date.
Par exemple, 20241222044634, et 241222044634 sont interprétés comme '2024-12-22 04:46:34'. - Un nombre au format AAAAMMJJ ou AAMMJJ en supposant qu'un tel nombre ait un sens en terme de date.
Par exemple, 20241222, et 241222 sont interprétés comme '2024-12-22'.
- AAAAMMJJHHMMSS ou AAMMJJHHMMSS, en supposant qu'un tel nombre ait un sens en terme de date.
- Un résultat de fonction qui retourne une valeur acceptable dans un champ de type DATETIME, DATE, ou TIMESTAMP, tels que NOW() ou CURRENT_DATE.
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.
Timestanp
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.
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 08/04/2005, zuletzt geändert 19/03/2024
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/sql-data-types.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
- The MySQL Cluster API Developer Guide : dev.mysql,
Column Types
(version 20/02/10)
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.