Cet article vous présente principalement les points de connaissances pertinents sur le type de colonne numérique dans MySQL. J'espère qu'il sera utile aux amis dans le besoin !
Tutoriel de référence recommandé : "Tutoriel mysql"
Le soi-disant type de colonne fait en fait référence à Le type de données, c'est-à-dire une classification unifiée des données, du point de vue du système, consiste à pouvoir les gérer de manière unifiée et à mieux utiliser l'espace limité.
En SQL, les types de données sont divisés en trois grandes catégories : Type numérique, type de chaîne et type de date et d'heure.
Pour les données numériques, elles peuvent être divisées en type entier et type décimal.
En SQL, en raison de la problématique d'économie d'espace disque, le système subdivise le type entier en cinq catégories, à savoir :
tinyint
: mini entier, utilise Types numériques dans les types de colonnes dans le didacticiel MySQL octet pour stocker les données (couramment utilisé) ;
smallint
: petit entier, utilise Types numériques dans les types de colonnes dans le didacticiel MySQL octets pour stocker les données ;
mediumint
: type entier moyen, utilise Types numériques dans les types de colonnes dans le didacticiel MySQL octets pour stocker les données ;
int
: type entier standard, utilise Types numériques dans les types de colonnes dans le didacticiel MySQL octets pour stocker les données (couramment utilisé). );
bigint
: grand entier, utilisant Types numériques dans les types de colonnes dans le didacticiel MySQL octets pour stocker les données.
Ensuite, entrez l'instruction SQL suivante pour tester :
-- 创建整型表create table my_int( int_Types numériques dans les types de colonnes dans le didacticiel MySQL tinyint, int_Types numériques dans les types de colonnes dans le didacticiel MySQL smallint, int_Types numériques dans les types de colonnes dans le didacticiel MySQL int, int_Types numériques dans les types de colonnes dans le didacticiel MySQL bigint )charset utfTypes numériques dans les types de colonnes dans le didacticiel MySQL;
Comme le montre l'image ci-dessus, nous avons réussi créémy_int
table, puis insérez des données :
-- 插入数据insert into my_int values (Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL);insert into my_int values (&#Types numériques dans les types de colonnes dans le didacticiel MySQL9;a&#Types numériques dans les types de colonnes dans le didacticiel MySQL9;,&#Types numériques dans les types de colonnes dans le didacticiel MySQL9;b&#Types numériques dans les types de colonnes dans le didacticiel MySQL9;,&#Types numériques dans les types de colonnes dans le didacticiel MySQL9;c&#Types numériques dans les types de colonnes dans le didacticiel MySQL9;,&#Types numériques dans les types de colonnes dans le didacticiel MySQL9;d&#Types numériques dans les types de colonnes dans le didacticiel MySQL9;);insert into my_int values (Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL);
Comme le montre la figure ci-dessus, grâce au type de colonne, nous pouvons limiter le type et la plage de longueur de les données insérées.
Quant à la raison pour laquelle une erreur hors plage est signalée lors de l'attribution d'une valeur à int_Types numériques dans les types de colonnes dans le didacticiel MySQL
, c'est parce que le type numérique en SQL a un bit signé par défaut, c'est-à-dire qu'il est divisé en positif et négatif. Si nous devons utiliser des données non signées, nous devons déclarer le type de données nous-mêmes, c'est-à-dire ajouter le mot-clé unsigned
lors de la déclaration du type de données. Par exemple :
-- 在 my_int 表中,添加 int_Types numériques dans les types de colonnes dans le didacticiel MySQL 字段,设置其数据类型为 tinyint unsignedalter table my_int add int_Types numériques dans les types de colonnes dans le didacticiel MySQL tinyint unsigned;
Comme le montre l'image ci-dessus, l'ajout du champ int_Types numériques dans les types de colonnes dans le didacticiel MySQL
est réussi et l'insertion des données continue :
-- 插入数据insert into my_int values (Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL);
Comme le montre l'image ci-dessus, lorsque nous limitons tinyint
à unsigned
, nous pouvons déjà insérer n'importe quel entier entre 0~Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL
! Cependant, avec le recul, regardons de plus près l'image suivante :
En observant l'image ci-dessus, nous retrouverons : Les données de chaque champ Le type sera suivi d’une paire de parenthèses contenant des nombres. Ces chiffres n'ont en réalité aucune signification particulière, ils représentent simplement la largeur d'affichage des données. En effet, on peut modifier la largeur d'affichage, mais cette modification ne changera pas la taille des données elles-mêmes.
La signification de la largeur d'affichage : lorsque les données ne sont pas suffisantes pour afficher la largeur, les données passeront automatiquement à la largeur d'affichage correspondante. Habituellement, elles doivent être associées à un <. 🎜> pour augmenter la largeur. Ne modifiez pas la taille de la valeur des données, c'est-à-dire utilisez 0
pour effectuer un remplissage nul, et le remplissage nul fera que la valeur deviendra automatiquement non signée. zerofill
-- 在 my_int 表中,添加 int_Types numériques dans les types de colonnes dans le didacticiel MySQL 字段,设置其数据类型为 tinyint zerofillalter table my_int add int_Types numériques dans les types de colonnes dans le didacticiel MySQL(Types numériques dans les types de colonnes dans le didacticiel MySQL) tinyint zerofill;
-- 插入数据insert into my_int values (Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL);
Comme le montre la figure ci-dessus, la signification du
zéro remplissage est de garantir le format des données.
Type décimaltype numérique avec point décimal ou plage au-delà du type entier.
En SQL, le type décimal se subdivise en deux types :Type à virgule flottante et Type à virgule fixe, parmi lesquels :
Type Types numériques dans les types de colonnes dans le didacticiel MySQL : Type à virgule flottante
Les données à virgule flottante sont un type de données de précision, car après avoir dépassé la plage spécifiée, elles seront précises est perdu et l’arrondi est effectué automatiquement. Théoriquement, les types à virgule flottante sont divisés en deux types de précision : : simple précision, qui prend Types numériques dans les types de colonnes dans le didacticiel MySQL octets pour stocker les données, et la plage de précision est d'environ Types numériques dans les types de colonnes dans le didacticiel MySQL chiffres ; float
double
:双精度,占用 Types numériques dans les types de colonnes dans le didacticiel MySQL 个字节存储数据,精度范围大概为 Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL 位左右。
浮点型的使用方式:如果直接用float
,则表示没有小数部分;如果用float(M,D)
,其中M
代表总长度,D
代表小数部分长度,M-D
则为整数部分长度。
执行如下 SQL 语句创建浮点数表,进行测试:
-- 创建浮点数表create table my_float( fTypes numériques dans les types de colonnes dans le didacticiel MySQL float, fTypes numériques dans les types de colonnes dans le didacticiel MySQL float(Types numériques dans les types de colonnes dans le didacticiel MySQL0,Types numériques dans les types de colonnes dans le didacticiel MySQL), fTypes numériques dans les types de colonnes dans le didacticiel MySQL float(Types numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL) )charset utfTypes numériques dans les types de colonnes dans le didacticiel MySQL;
在咱们向浮点数表my_float
插入数据的时候,可以直接插入小数,也可以插入用科学计数法表示的数据。此外,插入浮点型数据时,整数部分是不能超出长度范围的,但是小数部分是可以超出长度范围的,系统会自动进行四舍五入的操作。特别是,如果浮点数是因为系统进位(四舍五入)导致整数部分超出指定的长度,那么系统是允许成立的。
-- 插入测试数据insert into my_float values (Types numériques dans les types de colonnes dans le didacticiel MySQL.Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLeTypes numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQL0.Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL,9999.99);insert into my_float values (Types numériques dans les types de colonnes dans le didacticiel MySQL0Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL0,Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL9.99,9999.99);insert into my_float values (Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL,Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL.99,99.99999);
如上图所示,咱们的结论得到了验证。
第 Types numériques dans les types de colonnes dans le didacticiel MySQL 种:定点型
定点型数据,绝对的保证整数部分不会被四舍五入,也就是说不会丢失精度,但小数部分有可能丢失精度,虽然理论上小数部分也不会丢失精度。
执行如下 SQL 语句创建定点数表,以浮点数做对比,进行测试:
-- 创建定点数表create table my_decimal( fTypes numériques dans les types de colonnes dans le didacticiel MySQL float(Types numériques dans les types de colonnes dans le didacticiel MySQL0,Types numériques dans les types de colonnes dans le didacticiel MySQL), dTypes numériques dans les types de colonnes dans le didacticiel MySQL decimal(Types numériques dans les types de colonnes dans le didacticiel MySQL0,Types numériques dans les types de colonnes dans le didacticiel MySQL) )charset utfTypes numériques dans les types de colonnes dans le didacticiel MySQL;
当咱们插入数据的时候,定点数的整数部分一定不能超出长度范围(进位也不可以),小数部分的长度则可以随意超出,没有限制,系统会自动进行四舍五入的操作:
-- 插入测试数据insert into my_decimal values (99999999.99,99999999.99);insert into my_decimal values (Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL9.99,Types numériques dans les types de colonnes dans le didacticiel MySQL0Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL.Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL);insert into my_decimal values (Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL.99,Types numériques dans les types de colonnes dans le didacticiel MySQL0Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL.Types numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQLTypes numériques dans les types de colonnes dans le didacticiel MySQL);
如上图所示,咱们的结论同样得到了验证。
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!