MySQL学习历程(三):数据类型

1 所有数据类型

  1. 数值类型:整数类型TINYINT SMALLINT MEDIUMINT INT BIGINT;浮点小数类型FLOAT DOUBLE;定点小数DECIMAL。
  2. 日期时间类型:YEAR TIME DATE DATETIME TIMESTAMP。
  3. 字符串类型:CHAR VARCHAR BINARY VARBINARY BLOB TEXT ENUM SET。

2 数值类型

2.1 整数类型

类型名说明占用空间有符号表示范围无符号表示范围
TINYINT特别小的整数1个字节-128~1270~255
SMALLINT小整数2个字节-32768~327670~65535
MEDIUMINT中等大小的整数3个字节-(2^23)~(2^23 - 1)0~(2^24 - 1)
INT整数4个字节-(2^31)~(2^31 - 1)0~(2^32 - 1)
BIGINT大整数8个字节-(2^63)~(2^63 - 1)0~(2^64 - 1)
CREATE TABLE table_name(
    id     INT(10),
    name   VARCHAR(20)
);

此处的INT(10)表示的是显示宽度,显示时只显示10位,不足的以空格代替。但是如果有一条记录数据范围超过了10位,依然能够正确显示。

2.2 浮点小数类型和定点小数类型

类型名称说明占用空间
FLOAT单精度浮点数4个字节
DOUBLE双精度浮点数8个字节
DECIMAL(M, D)定点小数M+2个字节

DECIMAL(M, D)是定点小数类型:
1. M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认值是10。
2. D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
3. 如DECIMAL(5,2) 的最大值为9999.99,因为有7个字节可用。

3 日期和时间类型

类型名称日期格式日期范围占用空间
YEARYYYY1901~21551个字节
TIMEHH:MM:SS-838:59:59~838:59:593个字节
DATEYYYY-MM-DD1000-01-01~9999-12-33个字节
DATETIMEYYYY-MM-DD HH:MM:SS1000… ~ 9999…8个字节
TIMESTAMPYYYY-MM-DD HH:MM:SS1970… ~ 2018…4个字节

4 字符串类型

4.1 非二进制字符串类型

类型名称说明存储需求
CHAR(M)固定长度非二进制字符串M个字节,1 <= M <= 255
VARCHAR(M)变长非二进制字符串L+1个字节,L <= M && 1 <= M <= 255
TINYTEXT非常短的非二进制字符串L+1个字节,L < 2^8
TEXT短的非二进制字符串L+2个字节,L < 2^16
MEDIUMTEXT中等长度非二进制字符串L+3个字节,L < 2^24
LONGTEXT长的非二进制字符串L+4个字节,L < 2 ^ 32
ENUM枚举1或2个字节
SET一个设置,字符串对象可以有零个或多个SET成员1,2,3,4或8个字节

4.2 二进制类型字符串

类型名称说明存储需求
BIT(M)比特位大约(M+7)/8个字节
BINARY(M)固定长度二进制串M个字节
VARBINARY(M)可变长度二进制串M+1个字节
TINYBLOB非常短的BLOBL+1个字节,L < 2^8
BLOB短的BLOBL+2个字节,L < 2^16
MEDIUMBLOB中等长度BLOBL+3个字节,L < 2^24
LONGBLOB长的BLOBL+4个字节,L < 2 ^ 32

BIN()函数将数字转化为二进制
BLOB是二进制串,用来存储音频、图片等二进制数据;TEXT是非二进制字符串,用来存放纯文本文件,虽然存储文本文件本质上也是存储二进制,但是TEXT会有一个字符集,会转化为可显示字符。

注意点1:浮点数和定点数

浮点数的优势是可以表示更大的范围,更灵活;缺点是容易产生误差,浮点数之间进行比较和减法操作容易出现问题。
定点数确定了小数点位置,不容易产生误差,一般用于对精度要求比较高的数据。

注意点2:CHAR和VARCHAR

CHAR是固定长度,优点是处理速度快,缺点是浪费空间;
VARCHAR是可变长度,优点是节省空间,缺点是处理速度慢。
对于MyISAM存储引擎,最好使用固定长度的数据列,以使整个数据表静态化,从而缩短数据检索时间,用空间换时间;
对于InnoDB存储引擎,推荐使用VARCHAR,因为InnoDB数据表的存储格式不分固定长度和可变长度,所以在检索时间上固定长度和可变长度差不多,所以,使用VARCHAR就比较节省空间了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值