以下文章来源于何先振,责编小何

常见的数据类型:
整数类型:tinyint、smallint、mediumint、int(integer)、bigint
浮点类型:float、double
定点数类型:decimal
位类型:bit
日期时间类型:year、time、date、datetime、timestamp
文本字符串类型:char、varchar、tinytext、text、mediumtext、longtext
枚举类型:enum
集合类型:set
二进制字符串类型:
binary、varbinary、tinyblob、blob、mediumblob、longblob
JSON类型:json对象、json数组
空间数据类型:
单值类型:geometry、point、linestring、polygon
集合类型:
multipoint、multilinestring、multipolygon、geometrycollection
常见数据类型的属性:
null:数据列可包含null值
not null:数据列不允许包含null
default:默认值
primary key:主键
auto_increment:自动递增,适用于整数类型
unsigned:无符号
character set name:指定一个字符集
关于character set name属性说明:
创建数据库指定字符集

查看数据库的创建信息

创建表的时候,指明表的字符集

查询表的创建信息

创建表,指明表中的字段时,可以指定字段的字符集。

设置name字段字符集后,针对name的字段,就是gbk

my.ini (MySQL整体配置)>数据库>表>字段

整数类型一共有5种:
tinyint、smallint、mediumint、int(integer)和bigint
他们之间的区别,字节数越来越大,表示数的范围不一样。

数值范围举栗子:
创建5种整数型的表

查看字段信息

添加在对应类型的数值范围的数值

都可以存下

超出有符号的数值范围,就报错了

其他类型也是一样,超出类型所表示的数值范围就会报错。
显示宽度和ZEROFILL属性介绍
MySQL5.7的时候会展示各类型数据的宽度(字符+数字=宽度值)

创建一张表,指明显示宽度,并且f3字段添加了ZEROFILL属性

超出范围也不会报错,因为显示宽度不影响实际的宽度,实际的宽度更大。

f3字段后面加了ZEROFILL,显示宽度为5,当insert的值不足5位时,使用0填充

使用ZEROFILL属性声明的字段,自动会添加UNSIGNED,表示无符号。

从MySQL8.0开始,整数数据类型不推荐使用显示宽度属性。

UNSIGNED属性介绍
创建带有UNSIGNED字段的表

变成10,因为这是表示无符号的范围


适用场景
tinyint:一般用于枚举数据,比如系统设定取值范围很小且固定的场景。
smallint:可以用于较小范围的统计数据,比如统计公司的固定资产库存数量等。
mediumn:用于较大整数的计算,比如车站每日的客流量等。
int、integer:取值范围足够大,一般情况下不用考虑超限问题,用得最多。比如商品编号。
bigint:只有当处理特别巨大的整数时才会用到。比如双十一的交易量、大型门户网站的点击量、证券公司衍生产品持仓等。

推荐阅读书籍




