Présentation
Types de données MySQL sont importants à comprendre avant de commencer à créer et à travailler avec une base de données MySQL. Si vous affectez correctement chaque colonne, vous vous assurez que la base de données est optimisée et que les données sont stockées en toute sécurité.
Dans ce didacticiel, vous découvrirez les différents types de données MySQL.
Que sont les types de données dans MySQL ?
Un nom et un type de données définissent chaque colonne dans une table de base de données. Le type de données spécifié indique à MySQL le type de valeurs qu'il stockera, l'espace dont elles ont besoin et le type d'opérations qu'il peut effectuer avec ce type de données.
Types de données MySQL
Il existe de nombreux types de données différents que vous pouvez stocker dans une table MySQL.
Ils sont regroupés en cinq catégories principales :
- Types de données numériques
- Types de données de date et d'heure
- Types de données de chaîne
- Types de données spatiales
- Types de données JSON
Lisez la suite pour en savoir plus sur chaque groupe et voir quels types de données ils incluent.
Types de données numériques
Lorsque vous stockez des nombres dans une colonne de base de données, utilisez l'un des types de données numériques. MySQL prend en charge les types de données numériques exactes et approximatives.
La catégorie numérique est en outre subdivisée dans les groupes suivants :
- Types de données entiers
- Types de données à virgule flottante
- Types de données à virgule fixe
- Types de données de valeur binaire
Types entiers
Types de données entiers sont utilisés pour les nombres entiers (entiers). Ils comprennent à la fois des valeurs positives et négatives. Cependant, ils ne gèrent pas les nombres fractionnaires.
Par conséquent, des nombres tels que 30 et -5435 peuvent être stockés sous forme de types de données entiers, contrairement à 5,3 ou 1/5.
Les types entiers sont signés ou non signés. Ils sont subdivisés en fonction de leur taille, différant par leur longueur et leur portée.
Octets | Plage (non signée) | Plage (signé) | |
---|---|---|---|
TINYINT | 1 | de 0 à 255 | de -128 à 127 |
SMALLINT | 2 | de 0 à 65535 | de -32768 à 32767 |
INTENSITÉ MOYENNE | 3 | de 0 à 16777215 | de -8388608 à 8388607 |
INT | 4 | de 0 à 4294967295 | de -2147483648 à 2147483647 |
GRANDINT | 8 | de 0 à 18446744073709551615 | de -9223372036854775808 à 9223372036854775807 |
TINYINT
est un très petit entier qui utilise 1 octet de stockage. Il se compose de jusqu'à 4 chiffres . Sa plage non signée va de 0 à 255 . S'il est signé, il a une plage de -128 à 127 .
SMALLINT
est un petit entier qui utilise 2 octets de stockage. Il se compose de jusqu'à 5 chiffres . Sa plage non signée va de 0 à 65535 . Lorsqu'il est signé, il a une plage de -32768 à 32767 .
MEDIUMINT
est un entier de taille moyenne qui utilise 3 octets de stockage. Il comporte jusqu'à 9 chiffres . S'il n'est pas signé, il a une plage de 0 à 16777215 . Signé, sa valeur minimale est -8388608 , alors que sa valeur maximale est 8388607 .
INT
est un entier qui utilise 4 octets de stockage. Il utilise jusqu'à 11 chiffres . Lorsqu'il n'est pas signé, il va de 0 à 4294967295 . S'il est signé, il a la plage de -2147483648 à 2147483647 .
BIGINT
est un grand entier qui utilise 8 octets de stockage. Il comporte jusqu'à 20 chiffres . Sa valeur signée minimale est 0 , alors que sa valeur signée maximale est 18446744073709551615 . S'il est signé, il est compris entre -9223372036854775808 à 9223372036854775807 .
Types à virgule flottante
Les types de données numériques à virgule flottante sont des nombres rationnels utilisés pour représenter des valeurs approximatives. Utilisez des types de données à virgule flottante pour des calculs de haute précision.
Les types à virgule flottante incluent :
FLOAT
représente des valeurs simple précision qui utilisent 4 octets et inclure jusqu'à 6 ou 7 chiffres significatifs.DOUBLE
représentent des valeurs en double précision qui utilisent 8 octets et inclure jusqu'à 15 ou 16 chiffres significatifs.
La syntaxe de base pour définir FLOAT
/DOUBLE
les types de données sont FLOAT(M,D)
/DOUBLE(M,D)
.
M
représente le nombre total de chiffres, tandis que D
est le nombre de décimales. Par exemple, la valeur 5 143 234 serait défini comme 7,3 car il a 7 chiffres au total et 3 chiffres après la virgule.
Vous pouvez également utiliser le FLOAT(P)
syntaxe pour spécifier un type de données à virgule flottante, où P
précise la précision. Si P
a une valeur de 0 à 23 , il s'agit d'une colonne simple précision. Si la précision est entre 24 et 53 , il s'agit d'une colonne en double précision.
Octets | Plage (non signée) | Plage (signé) | |
---|---|---|---|
FLOAT | 4 | de 1.175494351E-38 à 3.402823466E+38 | de -3.402823466E+38 à -1.175494351E-38 |
DOUBLE | 8 | de 0 et 2.22507385850720 14E- 308 à 1.797693134862315 7E+ 308 | de -1.7976931348623 157E+ 308 à -2.22507385850720 14E- 308 |
Types à virgule fixe
Pour stocker des valeurs numériques exactes, utilisez le type de données à virgule fixe - DECIMAL
. Comme il représente un nombre exact, ce type de données est principalement utilisé pour les données qui reposent sur des valeurs précises (telles que les données monétaires).
La syntaxe de base est DECIMAL(P,D)
, où P
est synonyme de précision (le nombre de chiffres significatifs) et D
signifie échelle (le nombre de chiffres après la virgule).
Le nombre maximal de chiffres pour la précision est 65 , tandis que la valeur maximale de l'échelle est 30 .
Si vous ne définissez pas la précision et l'échelle, la colonne utilise les valeurs par défaut. Par défaut, les valeurs pour P,D sont 10,0 .
Types de valeurs binaires
Le BIT
le type de données stocke des valeurs binaires. Lors de la création d'une colonne qui stockera de telles valeurs, vous définissez le nombre de valeurs de bits allant de de 1 à 64 .
La syntaxe de ce type de données MySQL est BIT(N)
. Si vous ne spécifiez pas N
, la valeur par défaut est 1 .
Types de données de date et d'heure
La date et l'heure sont des types de données couramment utilisés. Que vous stockiez une heure de saisie de données, une date de naissance ou l'horodatage actuel, vous utilisez l'une des colonnes suivantes.
Les types de données de date et d'heure incluent :
DATETIME
,TIMESTAMP
DATE
TIME
YEAR
DATE HEURE, HORODATAGE
Pour stocker les valeurs de date et d'heure, utilisez soit DATETIME
ou TIMESTAMP
. Les deux types de données stockent les informations au format AAAA-MM-JJ HH:MM:SS format. Il inclut le y oreille, m onth, d oui, h notre, m inutes et s secondes.
La principale différence entre les deux est leur portée :
DATETIME
les valeurs vont de 1000-01-01 00:00:00 au 9999-12-31 23:59:59 .TIMESTAMP
les valeurs vont de 1970-01-01 00:00:01 au 2038-01-19 03:14:07 .
Vous pouvez inclure des fractions de seconde pour les deux options. Pour cela, indiquez la précision suivant la syntaxe DATETIME(p)
/TIMESTAMP(p)
.
Par exemple, pour stocker l'horodatage 22h53 le 1er mars 2021 , avec trois fractions de seconde, spécifiez le type de données TIMESTAMP(3)
. L'entrée est stockée sous :2021-03-01 22:53:35.346 .
DATE
DATE
est utilisé pour stocker les valeurs de date au format AAAA-MM-JJ (année, mois, date).
Le type de données prend en charge la plage 1000-01-01 à 9999-12-31 .
HEURE
TIME
est utilisé pour stocker les valeurs de temps sous la forme HH-MM-SS (heures, minutes, secondes) ou HHH-MM-SS . Les entrées indiquant le temps écoulé ou les différences de temps sont stockées et récupérées dans un format plus long (si elles ont besoin de plus de chiffres pour les heures).
Le type de données prend en charge la plage 1000-01-01 à 9999-12-31 .
ANNÉE
YEAR
stocke les valeurs de l'année au format AAAA . Il prend en charge les valeurs comprises dans la plage 1901-2155 .
Alors que les versions antérieures à MySQL 5.7.5 prenaient en charge les entrées à 2 et 4 chiffres pour YEAR
, il n'y a pas eu de support à 2 chiffres depuis la version 5.7.5.
Types de données de chaîne
Lors du stockage de chaînes de données, utilisez l'un des types de données de chaîne. Ils peuvent contenir des lettres, des chiffres, des images ou des fichiers.
En conséquence, il existe plusieurs types de données de chaîne différents :
CHAR
etVARCHAR
BINARY
etVARBINARY
BLOB
etTEXT
ENUM
SET
CHAR et VARCHAR
CHAR
et VARCHAR
sont des types de données utilisés pour stocker des chaînes non binaires. La principale différence entre les deux est la façon dont ils stockent les données.
CHAR
stocke des chaînes de longueur fixe (jusqu'à 255 personnages). Lors de la création d'un CHAR
colonne, vous spécifiez la longueur en utilisant le CHAR(N)
syntaxe. N
est le nombre de caractères que vous voulez prendre. Si vous ne définissez pas la longueur, il utilise la valeur par défaut 1 .
Ces valeurs sont stockées à droite avec la longueur spécifiée. Par conséquent, si vous configurez un CHAR(5)
colonne et y stocker une entrée de trois caractères, elle occupe toujours cinq caractères.
VARCHAR
stocke des chaînes de longueur variable. Alors que la longueur doit être définie lors de la création d'une colonne, les valeurs ne sont pas remplies à droite. Ils ont une limite maximale, mais la longueur n'est pas fixe et varie en fonction des données.
Auparavant, la plage d'entrées était de 0 à 255 . Après la sortie de MySQL 5.0.3, VARCHAR
la plage est jusqu'à 65 535 caractères .
BINAIRE et VARBINAIRE
BINARY
et VARBINARY
les types de données sont similaires au CHAR
mentionné précédemment et VARCHAR
. La principale différence entre ces deux groupes est que BINARY
et VARBINARY
sont utilisés pour les chaînes binaires.
BINARY
est utilisé pour les chaînes binaires de longueur fixe, jusqu'à 255 octets . La syntaxe principale pour définir une telle colonne est BINARY(N)
, où N
est le nombre d'octets.
VARBINARY
stocke des chaînes binaires de longueur variable. MySQL version 5.0.3 et versions ultérieures stocke jusqu'à 65 535 octets .
BLOB et TEXTE
Les deux BLOB
et TEXT
sont utilisés pour stocker de grandes quantités de données.
BLOB
poignées B inaire L grand O objets (c'est-à-dire de grands ensembles de données binaires telles que des images, des fichiers audio ou PDF).
Il existe 4 types de types de données BLOB à utiliser, selon la taille requise par vos données :
TINYBLOB
(0 - 255 ; 255 octets)BLOB
(0 - 65 535 ; 16 Ko)MEDIUMBLOB
(0 – 16 777 215; 16 Mo)LONGBLOB
(0 - 4 294 967 295 ; 4 Go)
TEXT
les types de données servent à stocker des chaînes de texte plus longues. Selon la quantité de données requises, il y a :
TINYTEXT
(0 - 255 ; 255 octets)TEXT
(0 - 65 535 ; 16 Ko)MEDIUMTEXT
(0 – 16 777 215; 16 Mo)LONGTEXT
(0 - 4 294 967 295 ; 4 Go)
ENUM
Le ENUM
Le type de données est utilisé pour stocker l'une des valeurs possibles prédéfinies dans une colonne. La colonne peut contenir jusqu'à 65 535 valeurs distinctes.
Lors de la création d'un ENUM
colonne de table dans MySQL, vous spécifiez une liste de toutes les valeurs autorisées.
RÉGLER
Comme ENUM
, le SET
le type de données a une liste prédéfinie de valeurs possibles stockées dans la colonne.
La principale différence entre les deux est que SET
permet à une entrée d'avoir plus d'une valeur.
Par exemple, si la colonne est définie comme SET('Red','Orange','Yellow','Green')
et a quatre valeurs possibles dans la liste, une entrée peut avoir la valeur 'Red' , tandis qu'un autre pourrait avoir la valeur 'Rouge','Jaune' .
Le nombre maximal de valeurs autorisées est 64 .
Types de données spatiales
Lors du stockage de données spatiales, vous pouvez utiliser l'un des nombreux types de données spatiales pris en charge par MySQL. Ils sont utilisés pour représenter des informations sur les formes géométriques et l'emplacement physique.
Nous pouvons les diviser en deux groupes :
- Valeurs de géométrie uniques
- Collections de valeurs
Valeurs de géométrie uniques
Les types de données à géométrie unique incluent GEOMETRY
, POINT
, LINESTRING
, et POLYGON
.
GEOMETRY
stocke tout type de valeur géométrique/spatiale.POINT
est utilisé pour une seule valeur de point.LINESTRING
stocke une collection de plusieurs points qui forment une ligne.POLYGON
est un type de données utilisé pour stocker une collection de plusieurs points qui forment une surface polygonale.
Collection de valeurs
La collection de types de données de valeurs inclut GEOMETRYCOLLECTION
, MULTIPOINT
, MULTILINE
, et MULTIPOLYGON
.
GEOMETRYCOLLECTION
stocke une collection de valeurs géométriques/spatiales.MULTIPOINT
est utilisé pour stocker une collection de valeurs de points multiples.MULTILINE
stocke une collection de plusieurs lignes.MULTIPOLYGON
est utilisé pour une collection de plusieurs polygones.
Types de données JSON
Depuis la version 5.7.8, MySQL inclut la prise en charge du JSON
natif type de données, permettant aux utilisateurs de stocker et de gérer des documents JSON via une base de données.
MySQL s'assure que les documents JSON sont valides et les stocke dans la colonne JSON.