- 本博客是《MySQL基础》系列博客的第三部分,主要介绍MySQL中的数据类型
- 本博客既为方便自己查看复习而作,亦为你而作,望能有所裨益
- 学习交流请联系April_0911@163.com
数据类型
- 每门语言都有属于自己的数据类型,大同小异罢了。
- 如下图红色方框区域,就是数据类型选择及展示之处。
- 下面我们就逐一介绍下一些常用的数据类型。
数值型数据
整数型数据
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1字节 | [-128,127] | [0,255] | 小整数值 |
SMALLINT | 2字节 | [ − 2 15 -2^{15} −215, 2 15 − 1 2^{15}-1 215−1] | [0, 2 16 − 1 2^{16}-1 216−1] | 大整数值 |
MEDIUMINT | 3字节 | [ − 2 31 -2^{31} −231, 2 31 − 1 2^{31}-1 231−1] | [0, 2 32 − 1 2^{32}-1 232−1] | 大整数值 |
INT | 4字节 | [ − 2 63 , 2 63 − 1 -2^{63},2^{63}-1 −263,263−1] | [0, 2 64 − 1 2^{64}-1 264−1] | 大整数值 |
BIGINT | 8字节 | — | — | 极大整数值 |
浮点型数据
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
FLOAT | 4字节 | — | — | 单精度浮点数值(不精确) |
DOUBLE | 8字节 | — | — | 双精度浮点数值(不精确) |
DECIMAL | 对DECIMAL(M,D)而言,字节数=max(M,D)+2 | 依赖于M和D的值 | 依赖于M和D的值 | 浮点数值(精确) |
注:DECIMAL(M,D)中M表示有多少位数字,D表示其中有多少位小数
字符型数据
字符集和字符序
我们之前在创建数据库的时候曾经提到要选择字符集及校验集,在介绍字符型数据时,我们有必要先简单介绍一下这个概念:
- 字符集:character set,是编码和字符符号的映射集合
- 字符序:collation,即排序规则,是用于比较字符集中字符的规则集
注:如果想要区分大小写,可以选择后缀为cs或bin的字符序。
show character set; -- 显示MySQL所支持的字符集及校验集
show variables like '%character%'; -- 显示当前配置中已生效的字符集及校验集
-- 我们平常遇到的乱码情况产生的原因就是字符集转化过程中其设置不一致
以下是MySQL中字符集的转换流程(图片来源:《MySQL开心入门》,侵删)
字符类型
类型 | 范围 | 简介 |
---|---|---|
CHAR(n) | n表示字符数,最多255个字符 | 定长字符,不同编码时其字节占用数不同——latin:1个字符1个字节;gbk:1个字符2个字节;utf8:1个字符3个字节 |
VARCHAR(n) | n表示字符数,最多65535个字符 | 变长字符,会多一个字节用于表示长度:小于等于255个字符,一个字节表示长度;大于255个字符,两个字节表示长度 |
TINYTEXT | 0~255字节 | 存储空间为值的长度+2个字节 |
TEXT | 0~65535字节 | 存储空间为值的长度+2个字节 |
MEDIUMTEXT | 0~167772150字节 | 存储空间为值的长度+3个字节 |
LONGEXT | 0~4294967295字节 | 存储空间为值的长度+4个字节 |
注:MySQL中每一行的所有数据合起来的字符长度不能超过65535
二进制数据
顾名思义,二进制类型就是用来保存二进制数据的数据类型。
类型 | 简介 |
---|---|
BINARY(M) | 字节数为M,允许长度为0~M的定长二进制字符串 |
VARBINARY(M) | 允许长度为0~M的变长二进制字符串,字节数为值的长度加1 |
BLOB | 可变长二进制数据,最多 2 16 − 1 2^{16}-1 216−1 个字节 |
TINYBLOB | 可变长二进制数据,最多255个字节 |
MEDIUMBLOB | 可变长二进制数据,最多 2 24 − 1 2^{24}-1 224−1 个字节 |
LONGBLOB | 可变长二进制数据,最多 2 32 − 1 2^{32}-1 232−1 个字节 |
BIT(M) | M位二进制数据,M最大值为64 |
日期型数据
类型 | 大小 | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3字节 | 1000-01-01 / 9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3字节 | -838:59:59 / 838:59:59 | HH:MM:SS | 时间值或持续时间 |
YEAR | 1字节 | 1901 / 2155 | YYYY | 年份值 |
DATETIME | 8字节 | 1000-01-01 00:00:00 / 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 时间和日期的混合值 |
TIMESTAMP | 4字节 | 1970-01-01 00:00:00 / 2038-1-19 11:14:07(北京时间) | YYYY-MM-DD HH:MM:SS | 时间戳 |
集合型数据
MySQL中的集合类型主要有两个:enum 和 set
类型 | 简介 |
---|---|
enum(‘选项一’,‘选项二’,···) | 字符串对象,单选列表其值从允许值列表中选择,只能选一个值,最多可包含65535个不同的元素 |
set(‘选项一’,‘选项二’,···) | 字符串对象,多选列表,可以选零个或多个值,最多可包含64个不同的成员 |
注:集合型数据设置好后,在如下图的原始界面并不能直接选择
此时需要跳转到表单界面进行相关操作,选择完成后Apply即可