MySQL - Types de données

La définition correcte des champs dans une table est importante pour l'optimisation globale de votre base de données. Vous ne devez utiliser que le type et la taille de champ dont vous avez vraiment besoin. Par exemple, ne définissez pas un champ de 10 caractères de large, si vous savez que vous n'utiliserez que 2 caractères. Ces types de champs (ou colonnes) sont également appelés types de données, après letype of data vous stockerez dans ces champs.

MySQL utilise de nombreux types de données différents divisés en trois catégories -

  • Numeric
  • Date et l'heure
  • Types de chaînes.

Parlons-en maintenant en détail.

Types de données numériques

MySQL utilise tous les types de données numériques ANSI SQL standard, donc si vous arrivez à MySQL à partir d'un système de base de données différent, ces définitions vous sembleront familières.

La liste suivante montre les types de données numériques courants et leurs descriptions -

  • INT- Un entier de taille normale qui peut être signé ou non signé. S'il est signé, la plage autorisée est comprise entre -2147483648 et 2147483647. Si elle n'est pas signée, la plage autorisée est comprise entre 0 et 4294967295. Vous pouvez spécifier une largeur de 11 chiffres maximum.

  • TINYINT- Un très petit entier qui peut être signé ou non signé. S'il est signé, la plage autorisée est comprise entre -128 et 127. Si elle n'est pas signée, la plage autorisée est comprise entre 0 et 255. Vous pouvez spécifier une largeur de 4 chiffres maximum.

  • SMALLINT- Un petit entier qui peut être signé ou non signé. S'il est signé, la plage autorisée est comprise entre -32768 et 32767. Si elle n'est pas signée, la plage autorisée est comprise entre 0 et 65535. Vous pouvez spécifier une largeur de 5 chiffres maximum.

  • MEDIUMINT- Un entier de taille moyenne qui peut être signé ou non signé. S'il est signé, la plage autorisée est comprise entre -8388608 et 8388607. Si elle n'est pas signée, la plage autorisée est comprise entre 0 et 16777215. Vous pouvez spécifier une largeur de 9 chiffres maximum.

  • BIGINT- Un grand entier qui peut être signé ou non signé. Si elle est signée, la plage autorisée va de -9223372036854775808 à 9223372036854775807. Si elle n'est pas signée, la plage autorisée va de 0 à 18446744073709551615. Vous pouvez spécifier une largeur de 20 chiffres maximum.

  • FLOAT(M,D)- Un nombre à virgule flottante qui ne peut pas être non signé. Vous pouvez définir la longueur d'affichage (M) et le nombre de décimales (D). Ce n'est pas obligatoire et sera par défaut à 10,2, où 2 est le nombre de décimales et 10 est le nombre total de chiffres (y compris les décimales). La précision décimale peut aller jusqu'à 24 positions pour un FLOAT.

  • DOUBLE(M,D)- Un nombre à virgule flottante double précision qui ne peut pas être non signé. Vous pouvez définir la longueur d'affichage (M) et le nombre de décimales (D). Ce n'est pas obligatoire et sera par défaut de 16,4, où 4 est le nombre de décimales. La précision décimale peut aller jusqu'à 53 places pour un DOUBLE. REAL est un synonyme de DOUBLE.

  • DECIMAL(M,D)- Un nombre à virgule flottante décompressé qui ne peut pas être non signé. Dans les décimales déballées, chaque décimale correspond à un octet. La définition de la longueur d'affichage (M) et du nombre de décimales (D) est nécessaire. NUMERIC est un synonyme de DECIMAL.

Types de date et d'heure

Les types de données de date et d'heure MySQL sont les suivants:

  • DATE- Une date au format AAAA-MM-JJ, comprise entre le 01/01/1 000 et le 31 décembre 9999. Par exemple, le 30 Décembre e 1973 serait stocké en tant que 30/12/1973.

  • DATETIME- Une combinaison de date et d'heure au format AAAA-MM-JJ HH: MM: SS, entre 1000-01-01 00:00:00 et 9999-12-31 23:59:59. Par exemple, 03h30 l'après - midi le 30 Décembre e 1973 seraient stockées sous forme 30/12/1973 15:30:00.

  • TIMESTAMP- horodatage A entre minuit, le 1er Janvier er 1970 et parfois en 2037. Cela ressemble à la précédente format DATETIME, sans que les traits d' union entre les chiffres; 03h30 l'après - midi le 30 Décembre e 1973 seraient stockées sous forme 19731230153000 (YYYYMMDDHHMMSS).

  • TIME - Stocke l'heure au format HH: MM: SS.

  • YEAR(M)- Enregistre une année dans un format à 2 ou 4 chiffres. Si la longueur est spécifiée comme 2 (par exemple YEAR (2)), YEAR peut être comprise entre 1970 et 2069 (70 à 69). Si la longueur est spécifiée comme 4, alors YEAR peut être de 1901 à 2155. La longueur par défaut est 4.

Types de chaînes

Bien que les types numériques et de date soient amusants, la plupart des données que vous stockerez seront au format chaîne. Cette liste décrit les types de données de chaîne courants dans MySQL.

  • CHAR(M)- Une chaîne de longueur fixe comprise entre 1 et 255 caractères (par exemple CHAR (5)), complétée à droite avec des espaces à la longueur spécifiée lorsqu'elle est stockée. La définition d'une longueur n'est pas obligatoire, mais la valeur par défaut est 1.

  • VARCHAR(M)- Une chaîne de longueur variable comprise entre 1 et 255 caractères. Par exemple, VARCHAR (25). Vous devez définir une longueur lors de la création d'un champ VARCHAR.

  • BLOB or TEXT- Un champ d'une longueur maximale de 65535 caractères. Les BLOB sont des «grands objets binaires» et sont utilisés pour stocker de grandes quantités de données binaires, telles que des images ou d'autres types de fichiers. Les champs définis comme TEXT contiennent également de grandes quantités de données. La différence entre les deux est que les tris et les comparaisons sur les données stockées sontcase sensitive sur les BLOB et sont not case sensitivedans les champs TEXT. Vous ne spécifiez pas de longueur avec BLOB ou TEXT.

  • TINYBLOB or TINYTEXT- Une colonne BLOB ou TEXT d'une longueur maximale de 255 caractères. Vous ne spécifiez pas de longueur avec TINYBLOB ou TINYTEXT.

  • MEDIUMBLOB or MEDIUMTEXT- Une colonne BLOB ou TEXT d'une longueur maximale de 16777215 caractères. Vous ne spécifiez pas de longueur avec MEDIUMBLOB ou MEDIUMTEXT.

  • LONGBLOB or LONGTEXT- Une colonne BLOB ou TEXT d'une longueur maximale de 4294967295 caractères. Vous ne spécifiez pas de longueur avec LONGBLOB ou LONGTEXT.

  • ENUM- Une énumération, qui est un terme sophistiqué pour la liste. Lors de la définition d'un ENUM, vous créez une liste d'éléments à partir de laquelle la valeur doit être sélectionnée (ou elle peut être NULL). Par exemple, si vous vouliez que votre champ contienne "A" ou "B" ou "C", vous définiriez votre ENUM comme ENUM ('A', 'B', 'C') et uniquement ces valeurs (ou NULL) pourrait jamais peupler ce champ.

Dans le chapitre suivant, nous verrons comment créer des tables dans MySQL.