Maison  >  Article  >  base de données  >  Quels sont les types de données de MySQL ? Explication détaillée des types de données MySQL

Quels sont les types de données de MySQL ? Explication détaillée des types de données MySQL

php是最好的语言
php是最好的语言original
2018-08-04 17:42:113237parcourir

Cet article répertorie la liste des types de données (liste) de MySQL, qui comprend principalement cinq catégories principales : type entier, type à virgule flottante, type de chaîne, type de date et autres types de données. Ce qui suit fournira une explication détaillée de ces cinq types de données. types de données. Il existe également des longueurs et des plages de types de données MySQL avec des recommandations d'utilisation et des principes de base pour la sélection des types de données.

1. Les types de données MySQL

Comprennent principalement les cinq catégories suivantes :

Types entiers : BIT, BOOL, TINY INT, SMALL INT, MEDIUM INT, INT, BIG INT.

Type à virgule flottante : FLOAT, DOUBLE, DECIMAL

Type de chaîne : CHAR, VARCHAR, TINY TEXT, TEXT, MEDIUM TEXT, LONGTEXT, TINY BLOB, BLOB, MEDIUM BLOB, LONG BLOB

Types de date : Date, DateTime, TimeStamp, Time, Year

Autres types de données : BINARY, VARBINARY, ENUM, SET, Geometry, Point, MultiPoint, LineString, MultiLineString, Polygon, GeometryCollection, etc.

1. Si unsigned est ajouté à la plage de valeurs de type entier

MySQL数据类型 含义(有符号)
tinyint(m) 1个字节  范围(-128~127)
smallint(m) 2个字节  范围(-32768~32767)
mediumint(m) 3个字节  范围(-8388608~8388607)
int(m) 4个字节  范围(-2147483648~2147483647)
bigint(m) 8个字节  范围(+-9.22*10的18次方)

, la valeur maximale sera doublée. Par exemple, la plage de valeurs de tinyint non signé est (0~256. ).

Le m dans int(m) représente la largeur d'affichage dans le jeu de résultats de la requête SELECT. Cela n'affecte pas la plage de valeurs réelle ou la largeur d'affichage. Je ne sais pas à quoi sert ce m.

2. Type à virgule flottante (float et double)

MySQL数据类型 含义
float(m,d) 单精度浮点型    8位精度(4字节)     m总个数,d小数位
double(m,d) 双精度浮点型    16位精度(8字节)    m总个数,d小数位

Supposons qu'un champ soit défini comme float(6,3). Si un nombre 123.45678 est inséré, la base de données réelle stocke 123.457. , mais le nombre total dépend du nombre réel, c'est-à-dire 6 chiffres. La partie entière a une longueur maximale de 3 chiffres. Si le nombre 12.123456 est inséré, 12.1234 est stocké. Si 12.12 est inséré, 12.1200 est stocké

3. les types de points sont stockés dans la base de données sont une valeur approximative, tandis que les types à virgule fixe stockent des valeurs exactes dans la base de données.

le paramètre décimal (m, d) m<65 est le nombre total, d<30 et d

4. String (char, varchar, _text)

char et varchar :
MySQL数据类型含义
char(n)固定长度,最多255个字符
varchar(n)固定长度,最多65535个字符
tinytext可变长度,最多255个字符
text可变长度,最多65535个字符
mediumtext可变长度,最多2的24次方-1个字符
longtext可变长度,最多2的32次方-1个字符

1.char(n) Si le nombre de caractères stockés est inférieur à n, puis ajoutez des espaces après et supprimez les espaces lors de l'interrogation. Par conséquent, il ne peut pas y avoir d'espaces à la fin des chaînes stockées dans le type char, et varchar n'est pas limité à cela.

2.char(n) de longueur fixe, char(4) occupera 4 octets quel que soit le nombre de caractères stockés, varchar est le nombre réel de caractères stockés + 1 octet (n< ;=255) ou 2 bytes (n>255),

Donc varchar(4), stocker 3 caractères occupera 4 octets.

3.La vitesse de récupération des chaînes de type Char est plus rapide que celle du type varchar.

varchar et texte :


1. Varchar peut spécifier n, le texte ne le peut pas. Le stockage interne de varchar est le nombre réel de caractères stockés + 1 octet (n<=255) ou 2 octets (n> 255), le texte est le nombre réel de caractères + 2 caractères

sections.

2. Le type de texte ne peut pas avoir de valeur par défaut.

3.varchar peut créer directement un index, et le texte doit spécifier le premier nombre de caractères pour créer un index. La vitesse de requête de varchar est plus rapide que celle du texte Lorsque les index sont créés, l'index du texte ne semble pas fonctionner.

5. Les données binaires (_Blob)

1. _BLOB et _text sont stockés de différentes manières. _TEXT est stocké en mode texte, tandis que _Blob est stocké en binaire. mode. Non sensible à la casse.

2. Les données stockées dans _BLOB ne peuvent être lues que dans leur ensemble.

3._TEXT peut spécifier le jeu de caractères, _BLO n'a pas besoin de spécifier le jeu de caractères.

6. Type de date et d'heure

Si vous définissez un champ comme horodatage, les données temporelles de ce champ seront automatiquement actualisées lorsque d'autres champs sont modifiés, ce champ de type de données peut donc stocker l'heure de la dernière modification de cet enregistrement.

Attributs des types de données

MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集

2. Longueur et plage des types de données MYSQL

Liste des types de données et longueurs d'octets :

< /tr>< tr>< td>TinyBlob < td>Jusqu'à 64 valeurs différentes< tr>
Type de données Longueur en octets Plage ou utilisation
Bit 1 Non signé [0,255], signé [-128,127], Remarque du blog Tianyuan : les types booléens BIT et BOOL occupent 1 octet td>
TinyInt 1 Entier [0,255]
SmallInt 2 Non signé [0,65535], signé [-32768,32767]
MediumInt td> 3 Non signé [0,2^24-1], signé [-2^23,2^23-1]]
Int 4 Non signé [0,2^32-1], signé [-2^31,2^31-1]
BigInt 8 Non signé [0,2^64-1], signé [-2^63,2^63 - 1]
Float(M,D) 4 Nombre à virgule flottante simple précision. Tianyuan Blog rappelle que D ici est la précision. Si D<=24, c'est le FLOAT par défaut. Si D>24, il sera automatiquement converti en type DOUBLE.
Double(M,D) 8 Virgule flottante double précision.
Décimal(M,D) M+1 ou M+2 Nombre à virgule flottante décompressé, l'utilisation est similaire à FLOAT et DOUBLE, Tianyuan Blog vous rappelle que si le type de données Decimal est utilisé dans ASP, le Decimal lu directement à partir de la base de données devra peut-être être converti en type Float ou Double avant l'opération.
Date 3 Affiché au format AAAA-MM-JJ, par exemple : 2009-07-19
Date Heure 8 Affiché au format AAAA-MM-JJ HH:MM:SS, par exemple : 2009 -07-19 11:22:30
TimeStamp 4 Affiché au format AAAA-MM-JJ, par exemple : 2009-07 -19
Heure 3 est affiché au format HH:MM:SS. Par exemple : 11:22:30
Année 1 est affiché au format AAAA. Par exemple : 2009
Char(M) M
数据类型 字节长度 范围或用法
Bit 1 无符号[0,255],有符号[-128,127],天缘博客备注:BIT和BOOL布尔型都占用1字节
TinyInt 1 整数[0,255]
SmallInt 2 无符号[0,65535],有符号[-32768,32767]
MediumInt 3 无符号[0,2^24-1],有符号[-2^23,2^23-1]]
Int 4 无符号[0,2^32-1],有符号[-2^31,2^31-1]
BigInt 8 无符号[0,2^64-1],有符号[-2^63 ,2^63 -1]
Float(M,D) 4 单精度浮点数。天缘博客提醒这里的D是精度,如果D<=24则为默认的FLOAT,如果D>24则会自动被转换为DOUBLE型。
Double(M,D) 8  双精度浮点。
Decimal(M,D) M+1或M+2 未打包的浮点数,用法类似于FLOAT和DOUBLE,天缘博客提醒您如果在ASP中使用到Decimal数据类型,直接从数据库读出来的Decimal可能需要先转换成Float或Double类型后再进行运算。
Date 3 以YYYY-MM-DD的格式显示,比如:2009-07-19
Date Time 8 以YYYY-MM-DD HH:MM:SS的格式显示,比如:2009-07-19 11:22:30
TimeStamp 4 以YYYY-MM-DD的格式显示,比如:2009-07-19
Time 3 以HH:MM:SS的格式显示。比如:11:22:30
Year 1 以YYYY的格式显示。比如:2009
Char(M) M

定长字符串。

VarChar(M) M 变长字符串,要求M<=255
Binary(M)M类似Char的二进制存储,特点是插入定长不足补0
VarBinary(M)M类似VarChar的变长二进制存储,特点是定长不补0
Tiny TextMax:255大小写不敏感
TextMax:64K大小写不敏感
Medium TextMax:16M大小写不敏感
Long TextMax:4G大小写不敏感
TinyBlobMax:255大小写敏感
BlobMax:64K大小写敏感
MediumBlobMax:16M大小写敏感
LongBlobMax:4G大小写敏感
Enum1或2最大可达65535个不同的枚举值
Set可达8最大可达64个不同的值
Geometry
Point
LineString
Polygon
MultiPoint
MultiLineString
MultiPolygon
GeometryCollection
Chaîne de longueur fixe. <🎜>
VarChar(M)MChaîne de longueur variable, nécessite M<=255
Binary(M)MStockage binaire similaire à Char, caractérisé par l'insertion d'espaces de longueur fixe et un remplissage 0
VarBinary(M)MStockage binaire de longueur variable similaire à VarChar, caractérisé par une longueur fixe sans remplissage 0
Petit texteMax : 255Insensible à la casse
Texte Max : 64 KInsensible à la casse
Texte moyenMax : 16 MoInsensible à la casse
Texte longMax : 4GInsensible à la casse
Max : 255Sensible à la casse
BlobMax : 64 KoSensible à la casse
MediumBlobMax : 16 MSensible à la casse
LongBlobMax : 4GSensible à la casse
Enum 1 ou 2 Jusqu'à 65 535 valeurs d'énumération différentes
DéfinirJusqu'à 8
Géométrie
Point
LigneString
Polygone
MultiPoint
MultiLineString
MultiPolygon< /td> < /td>
GeometryCollection

3. Suggestions d'utilisation

1. Lors de la spécification du type de données, le principe de petitesse est généralement adopté. Par exemple, si vous pouvez utiliser TINY INT, il est préférable de ne pas utiliser INT, et si vous pouvez utiliser TINY INT, il est préférable de ne pas utiliser INT. peut utiliser le type FLOAT, il est préférable de ne pas utiliser le type DOUBLE, cela améliorera donc considérablement l'efficacité opérationnelle de MYSQL, en particulier dans des conditions de test de grands volumes de données.

2. Il n'est pas nécessaire de concevoir le tableau de données de manière trop complexe. La distinction entre les modules fonctionnels peut être plus pratique pour une maintenance ultérieure. Soyez prudent avec les tableaux de données méli-mélo

3. La dénomination des champs est aussi une compétence

4. Avant de concevoir la structure de la table de données, imaginez qu'il s'agit de votre pièce. Peut-être que le résultat sera plus raisonnable et efficace

5. la base de données doit être C'est un compromis entre efficacité et évolutivité, et il est inapproprié de privilégier l'un ou l'autre côté

Principes de base pour la sélection des types de données

Prémisse : Utiliser un moteur de stockage approprié.
Principe de sélection : Déterminez comment choisir le type de données approprié en fonction du moteur de stockage sélectionné.
Les méthodes de sélection suivantes sont classées par moteur de stockage :

  • Moteur de stockage de données MyISAM et colonnes de données : table de données MyISAM, il est préférable d'utiliser des colonnes de données de longueur fixe (CHAR). au lieu d'une colonne de données variable de longueur (VARCHAR).

  • Moteur de stockage MEMORY et colonnes de données : les tables de données MEMORY utilisent actuellement le stockage de lignes de données de longueur fixe, donc peu importe que vous utilisiez des colonnes CHAR ou VARCHAR. Les deux sont traités comme des types CHAR.

  • Moteur de stockage InnoDB et colonnes de données : Il est recommandé d'utiliser le type VARCHAR.

Pour les tables de données InnoDB, le format de stockage de lignes interne ne fait pas de distinction entre les colonnes de longueur fixe et de longueur variable (toutes les lignes de données utilisent des pointeurs d'en-tête pointant vers les valeurs des colonnes de données), donc dans essence , l'utilisation de colonnes CHAR de longueur fixe n'est pas nécessairement plus simple que l'utilisation de colonnes VARCHAR de longueur variable. Par conséquent, le principal facteur de performances est le stockage total utilisé par les lignes de données. Étant donné que CHAR occupe en moyenne plus d'espace que VARCHAR, il est préférable d'utiliser VARCHAR pour minimiser le stockage total et les E/S disque des lignes de données qui doivent être traitées.
Parlons des colonnes de données de longueur fixe et des colonnes de données de longueur variable.

char et varchar

Les types CHAR et VARCHAR sont similaires, mais ils sont enregistrés et récupérés différemment. Ils diffèrent également en termes de longueur maximale et de préservation ou non des espaces de fin. Aucune conversion de cas n'est effectuée pendant le stockage ou la récupération.
Le tableau ci-dessous montre les résultats après avoir enregistré diverses valeurs de chaîne dans les colonnes CHAR(4) et VARCHAR(4), illustrant la différence entre CHAR et VARCHAR :

CHAR(4)存储需求VARCHAR(4)存储需求
''' '4个字节''1个字节
'ab''ab '4个字节'ab '3个字节
'abcd''abcd'4个字节'abcd'5个字节
'abcdefgh''abcd'4个字节'abcd'5个字节

Veuillez noter que la valeur dans la dernière ligne du tableau ci-dessus ne s'applique que lorsque n'utilise pas le mode strict si MySQL s'exécute en mode strict, les valeurs qui dépassent la longueur de la colonne ne seront pas enregistrées < ; 🎜> et des erreurs se produiront. Les valeurs récupérées des colonnes CHAR(4) et VARCHAR(4) ne sont pas toujours les mêmes car les espaces de fin sont supprimés de la colonne CHAR lors de la récupération. L'exemple suivant illustre la différence :
mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));
Requête OK, 0 ligne affectée (0,02 sec)
mysql> VALUES ('ab ', 'ab ');
Requête OK, 1 ligne (0,00 sec)
mysql> SELECT CONCAT(v, '+'), CONCAT(c, '+') FROM vc affecté ;
+----------------+----------------+
| CONCAT(v, '+' ) | CONCAT(c, '+') |
+----------------+----------------+
| ab + | ab+ |
+----------------+----------------+
1 ligne dans l'ensemble (0,00 sec)
Articles associés :

Explication détaillée des types de données MYSQL

Explication détaillée de l'utilisation correcte des valeurs numériques types de types de données MySQL

Vidéos associées :

Tutoriel vidéo MySQL sur la base de données

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn