MySQLi - 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; 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.
MySQLi utilise de nombreux types de données différents divisés en trois catégories: numérique, date et heure et types de chaîne.
Types de données numériques
MySQLi utilise tous les types de données numériques ANSI SQL standard, donc si vous arrivez à MySQLi à partir d'un autre système de base de données, 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 non compressé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 -
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 1973 serait stocké sous le numéro 1973-12-30.
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, 3 h 30 de l'après-midi du 30 décembre 1973 serait stocké sous la forme 1973-12-30 15:30:00.
TIMESTAMP - Un horodatage entre minuit, le 1er janvier 1970 et quelque part en 2037. Cela ressemble au format DATETIME précédent, seulement sans les tirets entre les nombres; Le 30 décembre 1973, à 3 h 30 de l'après-midi, sera stocké sous le numéro 19731230153000 (AAAAMMJJHHMMSS).
TIME - Stocke l'heure au format HH: MM: SS.
YEAR(M)- Stocke une année au format 2 ou 4 chiffres. Si la longueur est spécifiée comme 2 (par exemple, YEAR (2)), YEAR peut être de 1970 à 2069 (70 à 69). Si la longueur spécifiée est 4, YEAR peut être compris entre 1901 et 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 MySQLi.
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 sont sensibles à la casse sur les BLOB et ne le sont pas dans 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.