文章目录
一、MySQL 数据类型
MySQL支持很多数据类型,以便我们能在复杂的业务场景中支持各种各样的数据格式,存储适当的数据内容。我们在设计数据库时,正确的使用数据库类型对整个数据库的整洁和高效,会有很大的帮助。
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
1.1、mysql中编码和字符
在 mysql 中,一个中文汉字所占的字节数与编码格式有关:
- 如果是GBK编码,则一个中文汉字占2个字节,英文占1个字节
- 如果是UTF8编码,则一个中文汉字占3个字节,而英文字母占1字节。
比如定义某个字段数据类型为:varchar(32),表示这个可以存储 32 个字符,此时表示的是字符,所以跟中英文无关,也就是该字段可以存储 32 个中文,或者是 32 个英文,或者是 32 个中文和英文的混搭都行。但如果字符数超过 32 个的话就会报错。
二、数值类型
MySQL 支持所有标准 SQL 数值数据类型,mysql 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。并且 MySQL 允许我们指定数值字段中的值是否有正负之分(UNSIGNED)或者用零填补(ZEROFILL)
在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。浮点型有:FLOAT、DOUBLE、DECIMAL。
下面的表显示了需要的每个数值类型的存储所占用的字节和可表示的数值范围:
1 bit 即 1位 1字节 = 8 bit 1K = 1024字节 1M = 1024K
比如 INT 类型,该类型所占字节为 4 个字节。比如数据库中某列的字段类型为 INT,则每条数据的该列的数据都会占服务器容量的 4 个字节的存储容量,并且该列所能显示的数值范围只能是 -128~127 ,或者如果该列是无符号的话,则范围是 0~255。如果你存储超出最大范围则会提示 out of range value …,比如往 INT 且有符号的数据类型里面存储 2147483648 的值,则会报错并且不会存储成功。
2.1、整数类型的长度
常用的整数数据类型有 tinyint ,smallint ,mediumint , int ,bigint 共计5种。
在声明整数类型列时,我们可以跟上一个数值,例如 int(n) ,但实际上这里的 n 跟存储没有什么关系,无论 n 是什么,INT 数据类型都是 4 个字