Les types de données - MySQL
Noter ce cours :
Les types de données :
Les tables peuvent contenir différents types de données. Afin d'optimiser la place prise par vos données et la rapidité de traitement, il convient de choisir avec efficacité le type de données que contiendront les différents champs de la table.
Pour les champs de type numérique, l'option UNSIGNED va vous permettre en économisant de la place (on ne stocke plus le bit de signe) de stocker des nombres plus grands (positifs). Vous ne pourrez par contre plus stocker de nombres négatifs. L'attribut [M] définit le nombre de caractères maximum que le champ pourra contenir. Voici les différents types de données :
- TINYINT [M] [UNSIGNED]
Occupe 1 octet. Ce type peut stocker des nombres entiers de -128 à 127 si il ne porte pas l'attribut UNSIGNED, dans le cas contraire il peut stocker des entiers de 0 à 255.
-
SMALLINT [M] [UNSIGNED]
Occupe 2 octets. Ce type de données peut stocker des nombres entiers de -32 768 à 32 767 si il ne porte pas l'attribut UNSIGNED, dans le cas contraire il peut stocker des entiers de 0 à 65 535.
- MEDIUMINT [M] [UNSIGNED]
Occupe 3 octets. Ce type de données peut stocker des nombres entiers de -8 388 608 à 8 388 607 si il ne porte porte pas l'attribut UNSIGNED, dans le cas contraire il peut stocker des entiers de 0 à 16 777 215.
- INT [M] [UNSIGNED]
Occupe 4 octets. Ce type de données peut stocker des nombres entiers de -2 147 483 648 à 2 147 483 647 si il ne porte pas l'attribut UNSIGNED, dans le cas contraire il peut stocker des entiers de 0 à 4 294 967 295.
- INTEGER [M] [UNSIGNED]
Même chose que le type INT.
- BIGINT [M] [UNSIGNED]
Occupe 8 octets. Ce type de données stocke les nombres entiers allant de -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807 sans l'attribut UNSIGNED, et de 0 à 18 446 744 073 709 551 615 avec.
- FLOAT (précision simple de 0 à 24 et
précision double de 25 à 53) [UNSIGNED]
Occupe 4 octets si la précision est inférieure à 24 ou 8 au delà.
Stocke un nombre de type flottant.
- FLOAT[(M,D)] [UNSIGNED]
Occupe 4 octets. M est le nombre de chiffres et D est le nombre de décimales.
Ce type de données permet de stocker des nombres flottants à précision simple. Va de -1.175494351E-38 à 3.402823466E+38. Si UNSIGNED est activé, les nombres négatifs sont retirés mais ne permettent pas d'avoir des nombres positifs plus grands.
- DOUBLE PRECISION[(M,D)]
Occupe 8 octets. Même chose que le type DOUBLE
- DOUBLE [(M,D)]
Occupe 8 octets. Stocke des nombres flottants à double précision de -1.7976931348623157E+308 à -2.2250738585072014E-308, 0, et de 2.2250738585072014E-308 à 1.7976931348623157E+308.
Si UNSIGNED est activé, les nombres négatifs sont retirés mais ne permettent pas d'avoir des nombres positifs plus grands.
- REAL[(M,D)]
Occupe 8 octets. Même chose que le type DOUBLE
- DECIMAL[(M[,D])]
Occupe M+2 octets si D > 0, M+1 octets si D = 0
Contient des nombres flottants stockés comme des chaînes de caractères.
- NUMERIC [(M,D)]
Même chose que le type DECIMAL
- DATE
Occupe 3 octets. Stocke une date au format 'AAAA-MM-JJ' allant de '1000-01-01' à '9999-12-31'
- DATETIME
Occupe 8 octets. Stocke une date et une heure au format 'AAAA-MM-JJ HH:MM:SS' allant de '1000-01-01 00:00:00' à '9999-12-31 23:59:59'
- TIMESTAMP [M]
Occupe 4 octets. Stocke une date sous forme numérique allant de '1970-01-01 00:00:00' à l'année 2037. L'affichage dépend des valeurs de M : AAAAMMJJHHMMSS, AAMMJJHHMMSS, AAAAMMJJ, ou AAMMJJ pour M égal respectivement à 14, 12, 8, et 6
- TIME
Occupe 3 octets. Stocke l'heure au format 'HH:MM:SS', allant de '-838:59:59' à '838:59:59'
- YEAR
Occupe 1 octet. Année à 2 ou 4 chiffres allant de 1901 à 2155 ( 4 chiffres) et de 1970-2069 (2 chiffres).
- [NATIONAL] CHAR(M) [BINARY]
Occupe M octets, M allant jusqu'à 255
Chaîne de 255 caractères maximum remplie d'espaces à la fin. L'option BINARY est utilisée pour tenir compte de la casse.
- BIT
Occupe 1 octet. Même chose que CHAR(1)
- BOOL
Occupe 1 octet. Même chose que CHAR(1)
- CHAR (M)
Occupe M octets. Stocke des caractères. Si vous stockez un caractère et que M vaut 255, la donnée prendra 255 octets. Autant donc employer ce ce type de données pour des mots de longueur identique.
- VARCHAR (M) [BINARY]
Occupe L+1 octets (ou L représente la longueur de la chaîne).
Ce type de données stocke des chaînes de 255 caractères maximum. L'option BINARY permet de tenir compte de la casse.
- TINYBLOB (L représente la
longueur de la chaîne)
Occupe L+1 octets.
Stocke des chaînes de 255 caractères maximum. Ce champ est sensible à la casse.
- TINYTEXT
Occupe L+1 octets.
Stocke des chaînes de 255 caractères maximum. Ce champ est insensible à la casse.
- BLOB
Occupe L+1 octets.
Stocke des Chaînes de 65535 caractères maximum. Ce champ est sensible à la casse.
- TEXT
Occupe L+2 octets.
Stocke des chaînes de 65535 caractères maximum. Ce champ est insensible à la casse.
- MEDIUMBLOB
Occupe L+3 octets.
Stocke des chaînes de 16777215 caractères maximum.
- MEDIUMTEXT
Occupe L+3 octets.
Chaîne de 16 777 215 caractères maximum. Ce champ est insensible à la casse.
- LONGBLOB
Occupe L+4 octets.
Stocke des chaînes de 4 294 967 295 caractères maximum. Ce champ est sensible à la casse.
- LONGTEXT
Occupe L+4 octets.
Stocke des chaînes de 4 294 967 295 caractères maximum.
- ENUM('valeur_possible1','valeur_possible2','valeur_possible3',...)
Occupe 1 ou 2 octets (la place occupée est fonction du nombre de solutions possibles : 65 535 valeurs maximum.
- SET('valeur_possible1','valeur_possible2',...)
Occupe 1, 2, 3, 4 ou 8 octets, selon de nombre de solutions possibles (de 0 à 64 valeurs maximum)