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 :
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 :
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 :
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字节 | 年份 |
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.
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;
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.