Type de données MySQL
MySQL stocke les données. Tant qu'il s'agit de données, nous préciserons le type de données. Un certain type de données est spécifié dans les champs de la table. Ensuite, le type de données correspondant doit être utilisé dans les données insérées. Respectez également les exigences de longueur du type de données.
Dans MySQL, nous divisons les types de données dans les types suivants :
- Type numérique (entier, virgule flottante)
- Type de chaîne
- Date et type de temps
- Type composite
- Type d'espace (fondamentalement non utilisé dans les travaux non scientifiques, aucune explication ne sera donnée)
Type entier
MySQL数据类型 | 所占字节 | 值范围 |
---|---|---|
tinyint | 1字节 | -128~127 |
smallint | 2字节 | -32768~32767 |
mediumint | 3字节 | -8388608~8388607 |
int | 4字节 | 范围-2147483648~2147483647 |
bigint | 8字节 | +-9.22*10的18次方 |
La longueur du type entier est différente et le processus d'utilisation réel est également différent.
MySQL étend la norme SQL sous la forme d'un indicateur de largeur d'affichage facultatif afin que lorsqu'une valeur est récupérée de la base de données, la valeur puisse être allongée jusqu'à une longueur spécifiée. Par exemple, en spécifiant que le type d'un champ est INT(6),
garantit que les valeurs contenant moins de 6 chiffres sont automatiquement complétées par des espaces lorsqu'elles sont extraites de la base de données. Notez que l'utilisation d'un indicateur de largeur n'affecte pas la taille du champ ni la plage de valeurs qu'il peut stocker.
Remarque :
- Lors de la création de champs de table, nous pouvons utiliser de minuscules entiers non signés pour représenter le sexe. Utilisez 0 pour représenter une femme et 1 pour représenter un homme. Utilisez 2 pour représenter l’inconnu.
- De la même manière que l'âge humain, des entiers non signés peuvent être utilisés lors de la création de champs de table. Parce que l'âge humain n'a pas encore eu de nombre négatif
- en usage réel. Quelle est la valeur maximale qui doit être stockée dans notre entreprise. Lorsque nous créons une table, nous choisissons quel type stocker ces valeurs.
Type à virgule flottante
Type de données MySQL | octets occupés | Plage de valeurs | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
float(m, d) | 4 octets | Virgulule flottante simple précision type, m nombre total, d décimales | ||||||||||||
double(m, d) | 8 octets | Type à virgule flottante double précision , m nombre total, d décimales | ||||||||||||
decimal(m, d) |
| La décimale est une virgule flottante nombre stocké sous forme de chaîne |
Remarque :
- La virgule flottante est une valeur inexacte et peut être moins précise
- Et la virgule est appelée un nombre à virgule fixe. En interne, MySQL est essentiellement stocké sous forme de chaîne. En utilisation réelle, s'il existe un stockage de nombres à virgule flottante avec des exigences relativement élevées en matière de précision du montant et de l'argent, il est recommandé d'utiliser le type décimal (nombre à virgule fixe).
Type de caractère
MySQL数据类型 | 所占字节 | 值范围 |
---|---|---|
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-255字节 | 变长字符串 |
TINYBLOB | 0-255字节 | 不超过255个字符的二进制字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65535字节 | 二进制形式的长文本数据 |
TEXT | 0-65535字节 | 长文本数据 |
MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
LOGNGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
VARBINARY(M) | 允许长度0-M个字节的定长字节符串 | 值的长度+1个字节 |
BINARY(M) | M | 允许长度0-M个字节的定长字节符串 |
*CHAR * est utilisé pour les chaînes de longueur fixe et doit être défini avec un modificateur de taille entre parenthèses. Ce modificateur de taille va de 0 à 255. Les valeurs supérieures à la longueur spécifiée seront tronquées, tandis que les valeurs inférieures à la longueur spécifiée seront complétées par des espaces.
*VARCHAR *Traitez cette taille comme la taille de la valeur. Si la longueur n'est pas insuffisante, utilisez des espaces pour la compenser. Le type VARCHAR, en revanche, la traite comme la valeur maximale et utilise uniquement la longueur réellement nécessaire pour stocker la chaîne
Le type n'est pas complété par des espaces, mais les valeurs plus longues que l'indicateur sont toujours tronquées.
Étant donné que le type VARCHAR peut modifier dynamiquement la longueur de la valeur stockée en fonction du contenu réel, l'utilisation du type VARCHAR lorsque vous n'êtes pas sûr du nombre de caractères requis par un champ peut considérablement économiser de l'espace disque et améliorer l'efficacité du stockage.
Type de texte et type de blobLorsque la longueur requise du champ dépasse 255, MySQL propose deux types : TEXTE et BLOB. Ils ont tous des sous-types différents en fonction de la taille des données stockées. Ces données volumineuses sont utilisées pour stocker des blocs de texte ou des types de données binaires tels que des images et des fichiers sonores.
Il existe des différences de classification et de comparaison entre les types TEXT et BLOB. Le type BLOB est sensible à la casse, tandis que TEXT n'est pas sensible à la casse. Les modificateurs de taille ne sont pas utilisés sur les différents sous-types BLOB et TEXT.
MySQL数据类型 | 所占字节 | 值范围 |
---|---|---|
date | 3字节 | 日期,格式:2014-09-18 |
time | 3字节 | 时间,格式:08:42:30 |
datetime | 8字节 | 日期时间,格式:2014-09-18 08:42:30 |
timestamp | 4字节 | 自动存储记录修改的时间 |
year | 1字节 | 年份 |
- Le type d'heure est rarement utilisé dans les systèmes Web. De nombreuses personnes aiment utiliser int pour stocker l'heure. Lors de l'insertion, l'horodatage Unix est inséré car cette méthode est plus pratique pour le calcul. Utilisez les fonctions de type de date dans les activités frontales pour convertir les horodatages Unix en heures que les gens peuvent reconnaître. Vous pouvez choisir les types ci-dessus en fonction de la situation réelleCertaines personnes utilisent le type datetime pour stocker l'heure afin de faciliter la visualisation dans la gestion de la base de données.
Un type ENUM ne permet d'obtenir qu'une seule valeur à partir d'une collection tandis que le type SET permet d'obtenir n'importe quel nombre de valeurs à partir d'une collection ;
Type ENUM
Le type ENUM est similaire à une option unique car il ne permet d'obtenir qu'une seule valeur dans la collection. Plus facile à comprendre lorsqu’il s’agit de données mutuellement exclusives, telles que le sexe humain. Les champs de type ENUM peuvent prendre une valeur d'une collection ou utiliser une valeur nulle. Toute autre entrée amènera MySQL à insérer une chaîne vide dans le champ. De plus, si la casse de la valeur insérée ne correspond pas à la casse des valeurs de la collection, MySQL utilisera automatiquement la casse de la valeur insérée pour la convertir en une valeur cohérente avec la casse de la collection.
Le type ENUM peut être stocké sous forme de nombre en interne dans le système et est indexé à partir de 1. Un type ENUM peut contenir jusqu'à 65 536 éléments, dont un est réservé par MySQL pour stocker les informations d'erreur. Cette valeur d'erreur est représentée par l'index 0 ou une chaîne vide.
MySQL considère les valeurs apparaissant dans la collection de types ENUM comme une entrée légale, et toute autre entrée échouera. Cela montre que l'emplacement de l'enregistrement erroné peut être facilement trouvé en recherchant des lignes contenant une chaîne vide ou un index numérique correspondant de 0.
Type SET Le type SET est similaire mais pas identique au type ENUM. Le type SET peut obtenir n'importe quel nombre de valeurs à partir d'une collection prédéfinie. Et comme pour le type ENUM, toute tentative d'insérer une valeur non prédéfinie dans un champ de type SET entraînera l'insertion par MySQL d'une chaîne vide. Si vous insérez un enregistrement contenant à la fois des éléments légaux et illégaux, MySQL conservera les éléments légaux et supprimera les éléments illégaux.
Un type SET peut contenir jusqu'à 64 éléments. Dans un élément SET, la valeur est stockée sous la forme d'une séquence discrète de "bits" qui représentent son élément correspondant. Les bits sont un moyen simple et efficace de créer des collections ordonnées d'éléments.
Et il supprime également les éléments en double, il est donc impossible de contenir deux éléments identiques dans le type SET.
Pour trouver des enregistrements illégaux à partir d'un champ de type SET, recherchez simplement les lignes contenant des chaînes vides ou des valeurs binaires de 0.
Utilisation des types
Nous avons appris tellement de types, utilisez simplement le type correspondant lors de la création d'une instruction de table.
Par exemple :
CRÉER UNE TABLE SI NON EXISTE
demo
(
id
int(11) NOT NULL,
username
varchar(50) NON NULL,
password
char(32) NON NULL,
content
longtext NON NULL,
createtime
datetime NON NULL,
sex
tinyint(4) NON NULL
) MOTEUR=InnoDB CHARSET PAR DÉFAUT=utf8;
Champ d'autres paramètres d'attribut
UNSIGNED (non signé) Principalement utilisé pour les types entiers et à virgule flottante, utilisez non signé. C'est-à-dire qu'il n'y a pas de - (signe moins) précédent.
Chiffres de stockage plus longs. La plage de valeurs de l’entier tinyint est de -128 à 127. Après avoir utilisé des longueurs non signées, 0 à 255 peuvent être stockées.
Lors de la création, suivez l'instruction de champ entier ou à virgule flottante :
unsigned
ZEROFILL (0 padding) 0 ( pas un espace) peut être utilisé pour compléter la valeur de sortie. Utilisez ce modificateur pour empêcher la base de données MySQL de stocker des valeurs négatives.
Lors de la création, suivez l'instruction de champ entier ou à virgule flottante :
zerofill
defaultL'attribut par défaut garantit que When aucune valeur n'est disponible, une valeur constante est attribuée. Cette valeur doit être une constante car MySQL ne permet pas l'insertion de valeurs de fonction ou d'expression. De plus, cette propriété ne peut pas être utilisée avec les colonnes BLOB ou TEXT. Si l'attribut NULL a été spécifié pour cette colonne, la valeur par défaut sera NULL si aucune valeur par défaut n'est spécifiée, sinon la valeur par défaut dépendra du type de données du champ.
Lors de la création, suivez l'instruction de champ entier ou à virgule flottante :
'valeur' par défaut
non nulle Si un La colonne est définie comme non nulle, les valeurs nulles ne pourront pas être insérées dans la colonne. Il est recommandé de toujours utiliser l'attribut non nul dans les situations importantes, car il fournit une validation de base indiquant que toutes les valeurs nécessaires ont été transmises à la requête.
Lors de la création, suivez l'instruction de champ entier ou à virgule flottante :
non nul
null est spécifié pour la colonne Avec un attribut null, la colonne peut rester vide, que les autres colonnes de la ligne aient été remplies ou non. N'oubliez pas que null signifie "aucun" pour être précis, pas la chaîne vide ou 0.
Ne déclarez simplement pas non nul après l'instruction de champ entier ou à virgule flottante lors de la création.