数据库:mysql的数据类型

MySQL数据类型
类型类型名称类型说明
整数类型tinyInt8位二进制
 smallint16位二进制
 mediumint24位二进制
 int(integer)32位二进制
小数类型float单精度浮点数
 double双精度浮点数
 decimal(m,d)压缩严格的定点数
日期类型yearYYYY 1901~2155
 timeHH:MM:SS -838:59:59~838:59:59
 dateYYYY-MM-DD 1000-01-01~9999-12-3
 datetime

YYYY-MM-DD HH:MM:SS

1000-01-01 00:00:00~ 9999-12-31 23:59:59

 timestamp

YYYY-MM-DD HH:MM:SS

1970-01-01 00:00:01 ~2038-01-19 03:14:07

字符类型CHAR(M)M为0~255之间的整数
 VARCHAR(M)M为0~65535之间的整数
 TINYBLOB允许长度0~255字节
 BLOB允许长度0~65535字节
 MEDIUMBLOB允许长度0~167772150字节
 LONGBLOB允许长度0~4294967295字节
 TINYTEXT允许长度0~255字节
 TEXT允许长度0~65535字节
 MEDIUMTEXT允许长度0~167772150字节
 LONGTEXT允许长度0~4294967295字节
 VARBINARY(M)允许长度0~M个字节的变长字节字符串
 BINARY(M)允许长度0~M个字节的定长字节字符串
枚举类型ENUM把不重复的数据存储为一个预定义的集合。

1、字符类型使用策略:

数据经常变更:CHAR比VARCHAR更好,因为CHAR不容易产生碎片。
数据非常短:CHAR比VARCHAR在存储空间上更有效率。
PS:

使用时要注意只分配需要的空间,更长的列排序时会消耗更多内存。
尽量避免使用TEXT/BLOB类型,查询时会使用临时表,导致严重的性能开销。

2、枚举类型

ENUM存储非常紧凑,会把列表值压缩到一个或两个字节。
ENUM在内部存储时,其实存的是整数。
尽量避免使用数字作为ENUM枚举的常量,因为容易混乱。
排序是按照内部存储的整数

3、日期类型

尽量使用timestamp,空间效率高于datetime,

时间戳:可用整数来保存,如果需要存储微妙,可以使用bigint存储。

优点:具有 Timestamp 类型的所具有一些优点,并且进行日期排序以及对比等操作的效率会更高,跨系统也很方便。

缺点:数据的可读性太差了,无法直观的看到具体时间。

SQL:

将存储的整型时间戳转化:使用FROM_UNIXTIME,将时间戳转换为时间格式。

转成年-月-日 时:分:秒:

SELECT FROM_UNIXTIME(createTime) FROM user;

转成其他时间格式:自行调整后面的转换格式

SELECT FROM_UNIXTIME(createTime,'%Y-%m-%d %H:%i:%s') FROM user;

切记:

不要用字符串存储日期,原因:

1、字符串占用的空间更大

2、字符串存储的日期比较的效率较低(需要逐个字符进行比对)

3、字符串存储的日期无法用日期相关的API进行计算和比较

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值