MySQL数据库(7):数据类型-整数

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL数据库(7):数据类型-整数

image.png

通常使用较多的是int和tinyint


示例


create table my_int(
    tiny_int tinyint,
    small_int smallint,
    medium_int mediumint,
    int_ int,
    big_int bigint
);
-- 插入正确的值
insert into my_int 
(tiny_int, small_int, medium_int, int_, big_int) 
values
(10, 10000, 100000, 10000000, 1000000);
mysql> select * from my_int;
+----------+-----------+------------+----------+---------+
| tiny_int | small_int | medium_int | int_     | big_int |
+----------+-----------+------------+----------+---------+
|       10 |     10000 |     100000 | 10000000 | 1000000 |
+----------+-----------+------------+----------+---------+
-- 插入一个超出范围的值
insert into my_int 
(tiny_int, small_int, medium_int, int_, big_int) 
values
(255, 255, 255, 255, 255);
ERROR 1264 (22003): Out of range value for column 'tiny_int' at row 1
-- 原因是tinyint实际取值范围:-128~127,包含了负数
insert into my_int 
(tiny_int, small_int, medium_int, int_, big_int) 
values
(-128, 255, 255, 255, 255);
select * from my_int;
+----------+-----------+------------+----------+---------+
| tiny_int | small_int | medium_int | int_     | big_int |
+----------+-----------+------------+----------+---------+
|       10 |     10000 |     100000 | 10000000 | 1000000 |
|     -128 |       255 |        255 |      255 |     255 |
+----------+-----------+------------+----------+---------+

无符号标识(unsigned)

只要正数(0-255)


alter table my_int add unsigned_tiny_int tinyint unsigned first;
-- 插入255
insert into my_int 
(unsigned_tiny_int, tiny_int, small_int, medium_int, int_, big_int) 
values
(255, 127, 255, 255, 255, 255);
mysql> select * from my_int;
+-------------------+----------+-----------+------------+----------+---------+
| unsigned_tiny_int | tiny_int | small_int | medium_int | int_     | big_int |
+-------------------+----------+-----------+------------+----------+---------+
|              NULL |       10 |     10000 |     100000 | 10000000 | 1000000 |
|              NULL |     -128 |       255 |        255 |      255 |     255 |
|               255 |      127 |       255 |        255 |      255 |     255 |
+-------------------+----------+-----------+------------+----------+---------+
mysql> desc my_int;
+-------------------+---------------------+------+-----+---------+-------+
| Field             | Type                | Null | Key | Default | Extra |
+-------------------+---------------------+------+-----+---------+-------+
| unsigned_tiny_int | tinyint(3) unsigned | YES  |     | NULL    |       |
| tiny_int          | tinyint(4)          | YES  |     | NULL    |       |
| small_int         | smallint(6)         | YES  |     | NULL    |       |
| medium_int        | mediumint(9)        | YES  |     | NULL    |       |
| int_              | int(11)             | YES  |     | NULL    |       |
| big_int           | bigint(20)          | YES  |     | NULL    |       |
+-------------------+---------------------+------+-----+---------+-------+

显示长度zerofill

整型数据在显示的时候,最多可以显示的位数


tinyint(3) 表示最长显示3位,unsigned是正数,0-255不会超过3个长度

tinyint(4) 表示最长可以显示4位 -128~127

显示长度,只是代表了数据是否可以达到指定的长度,但是不会自动满足到指定长度,如果想要数据显示的时候,保持最高位(显示长度),需要增加zerofill属性


zerofill:从左侧开始填充0到指定位数,自动设置为unsigned


示例


alter table my_int add zerofill_tiny_int tinyint zerofill first;
desc my_int;
+-------------------+------------------------------+------+-----+---------+-------+
| Field             | Type                         | Null | Key | Default | Extra |
+-------------------+------------------------------+------+-----+---------+-------+
| zerofill_tiny_int | tinyint(3) unsigned zerofill | YES  |     | NULL    |       |
| unsigned_tiny_int | tinyint(3) unsigned          | YES  |     | NULL    |       |
| tiny_int          | tinyint(4)                   | YES  |     | NULL    |       |
| small_int         | smallint(6)                  | YES  |     | NULL    |       |
| medium_int        | mediumint(9)                 | YES  |     | NULL    |       |
| int_              | int(11)                      | YES  |     | NULL    |       |
| big_int           | bigint(20)                   | YES  |     | NULL    |       |
+-------------------+------------------------------+------+-----+---------+-------+
-- 插入数据
insert into my_int 
(zerofill_tiny_int, unsigned_tiny_int, tiny_int, small_int, medium_int, int_, big_int) 
values
(1, 1, 1, 1, 1, 1, 1);
select * from my_int;
+-------------------+-------------------+----------+-----------+------------+----------+---------+
| zerofill_tiny_int | unsigned_tiny_int | tiny_int | small_int | medium_int | int_     | big_int |
+-------------------+-------------------+----------+-----------+------------+----------+---------+
|              NULL |              NULL |       10 |     10000 |     100000 | 10000000 | 1000000 |
|              NULL |              NULL |     -128 |       255 |        255 |      255 |     255 |
|              NULL |               255 |      127 |       255 |        255 |      255 |     255 |
|               001 |                 1 |        1 |         1 |          1 |        1 |       1 |
+-------------------+-------------------+----------+-----------+------------+----------+---------+

自定义显示长度,不会改变字段所能表示的数据长度,超出长度不受影响,长度不足会补0


示例


alter table my_int add zerofill_tiny_int_2 tinyint(2) zerofill first;
desc my_int;
+---------------------+------------------------------+------+-----+---------+-------+
| Field               | Type                         | Null | Key | Default | Extra |
+---------------------+------------------------------+------+-----+---------+-------+
| zerofill_tiny_int_2 | tinyint(2) unsigned zerofill | YES  |     | NULL    |       |
| zerofill_tiny_int   | tinyint(3) unsigned zerofill | YES  |     | NULL    |       |
| unsigned_tiny_int   | tinyint(3) unsigned          | YES  |     | NULL    |       |
| tiny_int            | tinyint(4)                   | YES  |     | NULL    |       |
| small_int           | smallint(6)                  | YES  |     | NULL    |       |
| medium_int          | mediumint(9)                 | YES  |     | NULL    |       |
| int_                | int(11)                      | YES  |     | NULL    |       |
| big_int             | bigint(20)                   | YES  |     | NULL    |       |
+---------------------+------------------------------+------+-----+---------+-------+
insert into my_int 
(zerofill_tiny_int_2, zerofill_tiny_int, unsigned_tiny_int, tiny_int, small_int, medium_int, int_, big_int) 
values
(100, 100, 100, 100, 100, 100, 100, 100),
(1, 1, 1, 1, 1, 1, 1, 1);
select * from my_int;
+---------------------+-------------------+-------------------+----------+-----------+------------+----------+---------+
| zerofill_tiny_int_2 | zerofill_tiny_int | unsigned_tiny_int | tiny_int | small_int | medium_int | int_     | big_int |
+---------------------+-------------------+-------------------+----------+-----------+------------+----------+---------+
|                NULL |              NULL |              NULL |       10 |     10000 |     100000 | 10000000 | 1000000 |
|                NULL |              NULL |              NULL |     -128 |       255 |        255 |      255 |     255 |
|                NULL |              NULL |               255 |      127 |       255 |        255 |      255 |     255 |
|                NULL |               001 |                 1 |        1 |         1 |          1 |        1 |       1 |
|                 100 |               100 |               100 |      100 |       100 |        100 |      100 |     100 |
|                  01 |               001 |                 1 |        1 |         1 |          1 |        1 |       1 |
+---------------------+-------------------+-------------------+----------+-----------+------------+----------+---------+
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
38 5
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
81 0
|
2月前
|
存储 关系型数据库 MySQL
MySQL支持多种数据类型
MySQL支持多种数据类型
126 3
|
2月前
|
存储 关系型数据库 MySQL
什么是mysql的数据类型?
什么是mysql的数据类型?
49 2
|
2月前
|
存储 关系型数据库 MySQL
MySQL数据类型
MySQL数据类型
55 2
|
4月前
|
关系型数据库 MySQL Linux
数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
36 2
|
4月前
|
存储 关系型数据库 MySQL
MySQL 中的 BLOB 数据类型深入解析
【8月更文挑战第31天】
544 0
|
4月前
|
存储 关系型数据库 MySQL
|
4月前
|
存储 数据管理 数据库
|
4月前
|
存储 XML 关系型数据库
深入理解MySQL中的BLOB和TEXT数据类型
【8月更文挑战第31天】
678 0