Formation PUB200 : MySQL, 2018 Requêtes SQL de base

4.2 Types de données MySQL


Dans la phase de modélisation de la base de données, une fois le schéma logique complété, nous sommes rendus à entrer les types de données pour chacun des champs. Il s'agit de préciser si les données entrées seront des nombres, des chaînes de caractères, des dates, etc.

Voici les principaux types de données que vous rencontrerez. Une liste complète est présentée sur le site Web de MySQL.

Type Description Intervalle permis Doit-on spécifier la taille ?
INT

Nombre entier

Synonymne : INTEGER

de -2 147 483 648 à 2 147 483 647 Non
TINYINT Nombre entier de -128 à 127 Non

TINYINT(1) permet de stocker une valeur booléenne. Notez que la taille 1 affecte  l'affichage seulement. Elle n'a aucun effet sur l'intervalle de valeurs permises.
BIGINT Nombre entier de -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807 Non
DECIMAL(M, D)

Nombre avec décimales - représentation exacte

Utiliser pour les calculs précis et pour les valeurs monétaires

M = nombre total de chiffres avant ET après le point, sans compter le point décimal ni le signe

D = nombre de chiffres après le point

Maximum 65 chiffres pour M

Maximum 30 chiffres pour D

Oui sinon, c'est comme si on entrait (10,0)
DOUBLE(M, D)

Nombre avec décimales - représentation avec points flottants

Utiliser pour calculs scientifiques

de -1.7976931348623157E+308
à -2.2250738585072014E-308,
0,
et de 2.2250738585072014E-308
à 1.7976931348623157E+308
Oui sinon permettra la valeur maximale
FLOAT(M, D)

Nombre avec décimales - représentation avec points flottants

Pourrait causer des problèmes lors de calculs

de -3.402823466E+38
à -1.175494351E-38,
0,
et de 1.175494351E-38
à 3.402823466E+38
Oui sinon permettra la valeur maximale
VARCHAR Chaîne de caractères

MySQL 5.0.2 et moins :

de 0 à 255 caractères

MySQL 5.0.3 et plus :

de 0 à 65 535 caractères théoriquement, la limite étant en fonction du jeu de caractères.

Oui
TEXT Longue chaîne de caractères au maximum 216 - 1, ou 65 535 caractères (si chaque caractère est encodé sur un octet) Non
LONGTEXT Longue chaîne de caractères au maximum 232 - 1, ou 4 294 967 295 caractères (si chaque caractère est encodé sur un octet) Non
DATETIME

Date, incluant l'heure

Il est à noter que le format de stockage de la date est indépendant du format d'affichage.

de '1000-01-01 00:00:00' à '9999-12-31 23:59:59' Non
DATE

Date, sans l'heure

Il est à noter que le format de stockage de la date est indépendant du format d'affichage.

de '1000-01-01' à '9999-12-31' Non
TIME Heure, sans la date de '-838:59:59' à '838:59:59' Non
TIMESTAMP

Date et heure, pouvant prendre automatiquement la date et l'heure actuelles

Sous MySQL < 5.6, la date et l'heure actuelles seront automatiquement enregistrées dans un champ TIMESTAMP lors d'un ajout et seront mises à jour lors d'une modification si le champ reçoit la valeur NULL.

Sous MySQL >= 5.6, ce sera également le cas mais seulement si la variable système explicit_defaults_for_timestamp est désactivée dans le fichier my.ini (ou my.cnf).

if the explicit_defaults_for_timestamp system variable is disabled, you can initialize or update any TIMESTAMP (but not DATETIME) column to the current date and time by assigning it a NULL value, unless it has been defined with the NULL attribute to permit NULL values 1

Il est possible dans tous les cas d'ajouter une clause lors de la création de la table pour que le champ prenne la date actuelle par défaut.

CREATE TABLE ... (

    ...
    modification TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    ...

)

de ’1970-01-01 00:00:01′ UTC à ’2038-01-09 03:14:07′ UTC    Non   

Pour plus d'information

« Chapter 11 Data Types ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/data-types.html

« 11.1.1 Numeric Type Overview ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html

« 11.2.5. Numeric Type Attributes ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html

« Automatic Initialization and Updating for TIMESTAMP and DATETIME ». MySQL. https://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html

« Vous êtes arrivés au max des id INT 2 147 483 647 ». Efficience IT. https://www.itefficience.com/article/arrives-au-max-des-id-int-2147483647

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre