English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQL Data Types

以下各节描述了MySQL支持的数据类型。

MySQL数据类型

MySQL支持三种类型的数据类型:字符串数字日期/时间数据类型。

字符串数据类型

字符串数据类型通常用于存储名称,地址,描述或任何包含字母和数字的值,包括二进制数据,例如图像或音频文件。

CHAR et VARCHAR types

CHAR数据类型允许存储最大为255个字符的固定长度字符串。而VARCHAR数据类型允许存储最大为65535个字符的可变长度字符串(在MySQL 5.0.3之前限制为255个字符)。

CHAR et VARCHAR data types declarations length represents the maximum number of characters to be stored. For example, CHAR(5)最多可以容纳5个字符。

La principale différence entre les types de données CHAR et VARCHAR est la manière dont ils stockent les données. Lorsque la valeur est stockée dans une colonne CHAR, elle est右填充空格至指定长度, mais dans une colonne VARCHAR, la valeur n'est pas remplie. Cela signifie que si la valeur "ab" est stockée en tant que CHAR, elle peut容纳最多个字符。4) stockée dans VARCHAR(4) dans la colonne, alors cette valeur sera stockée sous la forme « ab », tandis que la même valeur sera stockée sous la forme « ab ».

Astuce :Utilisez le type de données CHAR pour stocker des valeurs de longueur fixe, par exemple, pour le pays/Code régional. Pour les valeurs de longueur variable telles que les noms ou les titres, VARCHAR peut économiser de l'espace.

Note:La longueur maximale autorisée pour VARCHAR est déterminée par la taille maximale de la ligne (65535Octets, partagés par toutes les colonnes) et les limites du jeu de caractères utilisé.

Types BINARY et VARBINARY

Les types BINARY et VARBINARY sont similaires à CHAR et VARCHAR, mais avec une différence : ils contiennent des chaînes de caractères binaires plutôt que des chaînes de caractères non binaires.   La longueur maximale autorisée pour BINARY et VARBINARY est la même que pour CHAR et VARCHAR, mais avec une différence : la longueur de BINARY et VARBINARY est exprimée en octets plutôt qu'en caractères.

Types TEXT et BLOB

Les types de données TEXT et BLOB sont spécialement utilisés pour stocker de grandes quantités de données. Le type de données TEXT est utilisé pour stocker des chaînes de caractères longues, telles que des descriptions, des commentaires de blog, etc.

BLOB est un grand objet binaire qui peut contenir un nombre variable de données. Cette fonction est particulièrement utile lorsque vous devez stocker des fichiers de média binaires dans la base de données (par exemple, des images ou des fichiers audio).

Les quatre types BLOB sont TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB. Leur différence réside uniquement dans la longueur maximale des valeurs qu'ils peuvent contenir. De même, ces quatre types de texte sont TINYTEXT, TEXT, MEDIUMTEXT et LONGTEXT. Ils correspondent aux quatre types BLOB, avec la même longueur maximale et les mêmes besoins en stockage.

Le tableau suivant liste les types de données de chaînes de caractères de MySQL qui apparaissent en paires. Que le type soit binaire ou non binaire, la longueur maximale est exprimée en octets.

Types de données binairesTypes de données non binairesLongueur maximale
BINARYCHAR255
VARBINARYVARCHAR65535
TINYBLOBTINYTEXT255
BLOBTEXT65535
MEDIUMBLOBMEDIUMTEXT16777215
LONGBLOBLONGTEXT4294967295

Note:Pour les types de données de chaînes de caractères non binaires, la valeur de la longueur de la colonne est généralement appelée nombre de caractères plutôt que nombre d'octets. Cela signifie que le nombre maximum de caractères d'une chaîne contenant des caractères de plusieurs octets est plus faible.

Type ENUM

Le type de données ENUM vous permet de spécifier une liste des valeurs possibles qui peuvent être stockées dans une colonne. Par exemple, spécifiez ENUM de sexe ('male', 'female') NOT NULL columns can have any of the following values: '', 'male', or 'female'. You can specify up to65535different values. If you insert an invalid value into an ENUM column (i.e., a string that does not exist in the allowed value list), an empty string will be inserted.

SET type

SET data types allow you to specify a list of values to be inserted into the column, such as ENUM. However, unlike ENUM data types that allow only one value to be selected, SET data types allow multiple values to be selected from the specified value list.

For example, a column specified as option SET('one', 'two') NOT NULL can store the following values: 'one', 'two', or 'one,two'. Multiple values separated by commas (,) can be specified. For the SET data type, up to64different values.

Number data types

Number data types are usually used to store data such as prices, salaries, etc.

INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT types

MySQL supports SQL standard integer types INTEGER (or INT) and SMALLINT. MySQL also supports integer types TINYINT, MEDIUMINT, and BIGINT as extensions to the SQL standard. The following table shows the range of each integer type.

data typesrange (signed)range (unsigned)
TINYINT-128 to 1270 to 255
SMALLINT-32768 to 327670 to 65535
MEDIUMINT-8388608 to 83886070 to 16777215
INT-2147483648 to 21474836470 to 4294967295
BIGINT-9223372036854775808 to 92233720368547758070 to 18446744073709551615

number data types have additional properties of SIGNED (sign) and UNSIGNED (unsigned). Number data types are signed by default, ranging from negative to positive. Adding the UNSIGNED attribute to a numeric column does not allow negative numbers and moves the range up, starting from 0 instead of a negative number.

DECIMAL, NUMERIC types

DECIMAL and NUMERIC data types are used to store accurate numbers. These data types are also known as 'fixed-point' or 'exact value' types and are usually used when maintaining precise accuracy is required, such as storing monetary data like product prices. In MySQL, NUMERIC is implemented as DECIMAL.

When declaring DECIMAL or NUMERIC columns, you can specify precision and decimal places, such as DECIMAL(P, S) or NUMERIC(P, S), where P is the precision and S is the number of decimal places. Precision specifies the maximum number of digits that can be stored in the column (including the number of digits after the decimal point), while the number of decimal places indicates the number of digits that can be stored after the decimal point. For example, the price DECIMAL(62column can store any value with six digits and two decimal places, that is-9999.99to9999.99values.

FLOAT, DOUBLE types

Les types FLOAT et DOUBLE représentent des valeurs de données numériques approchées. C'est pourquoi ces types de données sont également appelés “flottants” ou “valeurs approchées”

La syntaxe prise en charge par MySQL : FLOAT (M, D) ou DOUBLE PRECISION (M, D). 73,-9999.999。”   MySQL arrondit les valeurs lors du stockage, donc si vous convertissez9999.0009Insérer FLOAT (73“)colonnes9999.001。”

Note:La comparaison des valeurs flottantes peut entraîner des problèmes car elles sont des valeurs approchées et non des valeurs exactes. Par conséquent, pour stocker des valeurs utilisables pour la comparaison, telles que price, salary, etc., utilisez le type de données DECIMAL.

Les types de données DATE et TIME

Les types de données date et heure sont généralement utilisés pour stocker des données telles que la date de naissance, la date d'embauche, la date et l'heure de création ou de mise à jour d'un enregistrement dans une table, etc.

Le type DATE

Le type DATE est utilisé pour stocker les dates. MySQL DATE stocke les valeurs sous le format 'YYYY-MM-DD' pour stocker et récupérer les valeurs, où YYYY, MM et DD sont respectivement les parties année, mois et jour de l'heure. La gamme prise en charge est “ 1000-01-01” à “ 9999-12-31”

Le type de données TIME

Le type TIME peut être utilisé pour stocker les jours ou l'intervalle de temps. MySQL TIME stocke et récupère les valeurs sous le format 'HH:MM:SS', où HH, MM et SS sont les parties heures, minutes et secondes de l'heure (ou le format 'HHH:MM:SS' pour les heures). La gamme de valeurs prises en charge par TIME est-838:59:59” à838:59:59”.

heures, car dans MySQL, le type TIME peut être utilisé non seulement pour stocker l'heure d'une journée (doit être inférieur à24heures), et peuvent également être utilisés pour le temps écoulé ou l'intervalle entre deux événements (peut être beaucoup plus grand que24heures, même négatives).

Note:Par défaut, les valeurs valides mais hors de la gamme TIME seront raccourcies à l'extrémité la plus proche de la gamme. Par exemple, “ 860:00:00” sera converti en “ 838:59:59». Les valeurs de TIME non valides seront converties en “ 00:00:00”.

Les types DATETIME et TIMESTAMP

Les types DATETIME et TIMESTAMP sont utilisés pour représenter les années en 'YYYY-MM-DD HH:MM:SS' pour stocker les valeurs combinées de date et d'heure. Ces types de données sont généralement utilisés pour stocker la date et l'heure lors de la distribution des commandes, lors de la création ou de la modification d'une ligne dans une table, etc.

Ces deux types de données sont similaires en de nombreux aspects, mais ils présentent également certaines différences. Le type DATETIME prend en charge l'intervalle1000-01-01 00:00:00' à9999-12-31 23:59:59Cependant, l'intervalle des horodatages est1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

TIMESTAMP and DATETIME also have special automatic initialization and automatic update properties, but these properties do not apply to MySQL 5.6.5previous DATETIMEM.

Note: MySQL converts TIMESTAMP values from the current time zone to UTC for storage and then from UTC to the current time zone for retrieval.

Year (YEAR) Type

The YEAR data type is used to store four-digit year values in the YYYY format.

can be declared as YEAR or YEAR(4) The supported range of YEAR values is1901to2155.Invalid YEAR values will be converted to 0000.

Note:Older MySQL versions still allow the use of to store two-digit year values YEAR(2) but is now deprecated and is used in MySQL 5.7.5has removed support for it.