Lazygeek Lazygeek
Title

Numériques

INT

Type Nombre de valeurs Nombre de valeurs
TINYINT 2^8 256
SMALLINT 2^16 65536
MEDIUMINT 2^24 16 777 216
INT 2^32 4 294 967 296
BIGINT 2^64 18 446 744 073 709 551 616

Options

  • UNSIGNED
  • INT(x) ZEROFILL: si le chiffre fait moins de x digits, l’affichage est complété avec des 0. Pas d’impact si le nombre fait x digits ou plus.

NUMERIC & DECIMAL

Les formats NUMERIC et DECIMAL stockent des nombres sous forme de chaîne de caractères.

  • NUMERIC(x, y): x nombre total de chiffres et y chiffres après la virgule.
  • DECIMAL: idem

Exemple

Déclaration valeur mini valeur maxi
NUMERIC(5,3) -99.999 99.999

Spécificité MySQL

L’octet utilisé pour le signe, peut être utilisé pour stocker un digit supplémentaire dans le cas des nombres positifs.

Déclaration valeur mini valeur maxi
NUMERIC(5,3) -99.999 999.999

FLOAT, DOUBLE & REAL

Type Nombre d’octets Commentaire
FLOAT 4 Accepte des paramètres de précision
DOUBLE 8  
REAL 4 Spécificité MySQL: 8 octets sont utilisés

⚠️ Attention: Etant donné que ce sont des valeurs numériques réelles, il peux y avoir des problèmes d’imprécision. En cas de besoin accru de précision on utilisera les formats DECIMAL et NUMERIC

Alphanumériques

CHAR & VARCHAR

Pour les chaînes de caractères de maximum 255 caractères:

Type Description Mémoire utilisée
CHAR(x) Stocke x caractères x octets
VARCHAR(x) Stocke jusqu’à x caractères 1 octet par caractère de la chaîne (maxi x) + 1 octet utilisé pour mémorisé la taille de la chaîne

✏️ Note: Si on stocke uniquement des chaînes de x caractères, il est plus intéressant d’utiliser le type CHAR (on économise l’octet qui sert à mémoriser la taille). Au contraire, si on stocke des chaînes de taille variable, il est plus intéressant d’utiliser VARCHAR (on n’utilise pas systématiquement les x octets)

TEXT

Plus de 255 caractères

Type Nombre de caractères
TINYTEXT 2^8
TEXT 2^16
MEDIUMTEXT 2^24
LONGTEXT 2^32

BINARY

Similaire aux types CHAR et TEXT mais permet de traiter des octets bruts (ie. sans interprétation en tant que caractère). Utile pour stocker des données brutes, comme des fichiers.

Type Nombre d’octets stockés Type référent
BINARY(x) x octets (maxi 255) CHAR(x)
VARBINARY(x) x octets (maxi 255) VARCHAR(x)
TINYBLOB 2^8 TINYTEXT
BLOB 2^16 TEXT
MEDIUMBLOB 2^24 MEDIUMTEXT
LONGBLOB 2^32 LONGTEXT

SET & ENUM

⚠️ Important: SET et ENUM sont des types propres à MySQL.

ENUM

ENUM('valeur1' , 'valeur2' , 'valeur3' , ...)
  • la cellule peut prendre soit directement une valeur énumérée (ex: ‘valeur1’)
  • soit l’index de la valeur (0=”” ; 1=”valeur1” ; …)
  • maxi 65535 valeurs

SET

SET('valeur1' , 'valeur2' , 'valeur3' , ...)
  • la cellule peut accepter 0 ou n valeurs (“valeur1” et “valeur3”)
  • la valeur numérique stockées comprend 1 bit par valeur énumérée
  • chaque bit est positionné selon la présence de la valeur dans la cellule
  • exemple: “valeur1” ; “valeur2” –> 011

Temporel

DATE

[YY]YY MM DD
  • [YY]YY : l’année: sur 2 ou 4 chiffres
    • sur 2 chiffres: de 1970 à 2069
    • sur 4 chiffres: de 1001 à 9999
  • MM : le mois
  • DD : le jour
  • caractère de séparation: rien, espace ou n’importe quel caractère

Exemples

  • 1982-09-07 : format standard
  • 82-09-07
  • 1982.09.07
  • 82%09%07
  • ‘19820907’
  • 19820907 (⚠️ attention, ce format est stocké sous forme de nombre et non sous forme de chaîne de caractères)

TIME

Permet de stocker une heure mais également un intervalle de temps.

Peut aussi être négatif.

[D] HH:MM:SS
  • [D] : nombres de jours (facultatif). Doit impérativement être suivi d’un espace.
  • HH : heure (peut être supérieur à 24 dans le cas d’un intervalle de temps)
  • MM : minutes
  • SS : secondes
  • heures, minutes et secondes doivent être séparés par :
  • de -838:59:59 à 838:59:59

DATETIME

[YY]YY MM DD HH mm ss
  • [YY]YY : l’année: sur 2 ou 4 chiffres
    • sur 2 chiffres: de 1970 à 2069
    • sur 4 chiffres: de 1001 à 9999
  • MM : le mois
  • DD : le jour
  • HH : l’heure
  • mm : les minutes
  • ss : les secondes
  • caractère de séparation entre la date et l’heure: espace obligatoire
  • caractère de séparation: rien, espace ou n’importe quel caractère

Exemples

  • 1982-09-07 01-50-25: format standard
  • 82-09-07 01:50:25
  • 1982.09.07 015025
  • 19820907015025 (attention, ce format est stocké sous forme de nombre et non sous forme de chaîne de caractères)
    • dans ce cas particulier, il ne faut pas mettre d’espace entre la date et l’heure

YEAR

Permet de stocker uniquement une année.

  • 2 ou 4 chiffres
    • 2 chiffres: de 1970 à 2069
    • 4 chiffres: de 1901 à 9999
  • format numérique ou chaîne de caractères

TIMESTAMP

  • Nombre de secondes écoulées depuis le 1er janvier 1970 à 00h00min00s
  • stocké sur 4 octets
  • valeur maxi : 2^32, soit le 19 janvier 2038 à 3h14min7s

⚠️ ATTENTION : SPECIFICITE MySQL

MySQL stocke les timestamps à la manières de datetime au format numérique.

Ainsi, le 09/07/1982 à 1h50min25s sera stocké : 19820907015025

Mais MySQL conserve les mêmes valeurs mini/maxi que le timestamp officiel.