加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL 的数据类型2

发布时间:2023-02-28 13:05:09 所属栏目:MySql教程 来源:
导读:MysqL 的数据类型(2)
这一小节我们继续学习 MysqL 数据库的数据类型上一小节学习了整数类型和浮点类型,本小节介绍日期时间类型和字符串类型。

1.日期和时间类型
类型 大小 格式 范围
date 3字节
MysqL 的数据类型(2)
这一小节我们继续学习 MysqL 数据库的数据类型上一小节学习了整数类型和浮点类型,本小节介绍日期时间类型和字符串类型。

1.日期和时间类型
类型    大小    格式    范围
date    3字节    YYYY-MM-DD    1000-01-01  ~ 9999-12-31
time    3-6字节    HH::MM:SS[.微秒]    -838:59:59 ~ 838:59:59
year    1字节    YYYY    1901 ~ 2155
datetime    5-8字节    YYYY-MM-DD HH:MM:SS[.微秒值]    1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 UTC
timestamp    4-7字节    YYYY-MM-DD HH:MM:SS[.微秒值]    1970-01-01 00:00:00 ~ 2038-01-19 03:14:07 UTC
1.1 date
date 类型为日期类型,存储空间 3个字节,格式为 “YYYY-MM-DD”,例如 “2020-03-16”,日期的范围 “1000-01-01 ~ 9999-12-31”,通常只想用来存储如 “2020-02-02” 这种格式的日期字段时,可以选择使用 date 类型。

1.2 time
time 类型为时间类型,存储空间 3 ~ 6个字节,格式为 “HH::MM:SS[.微秒]” ,例如 “04:31:22.33”,范围 “-838:59:59 ~ 838:59:59”,通常只想用来存储如 “04:31:22.33” 这种格式的时间字段时,可以选择使用 time 类型。

1.3 year
year 类型为日期类型,存储空间 1 个字节 ,例如 “2020”,范围 “1901 ~ 2155”,通常只想用来存储如 “2020” 这种格式的日期字段时,可以选择使用 year 类型。

1.4 datetime
datetime 类型为精确时间的日期类型,存储空间为 5 ~ 8 个字节,格式为 “YYYY-MM-DD HH:MM:SS[.微秒值]”,例如 “2020-02-02 02:02:02.02”,范围 “1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 UTC”,通常只想用来存储如 “2020-02-02 02:02:02.02” 这种格式的日期字段时,可以选择使用 datetime 类型。

1.5 timestamp
timestamp 类型保存了从1970年01月01日午夜以来的秒数,它和 UNIX 时间戳相同,存储空间 4 ~ 7 个字节,范围 “1970-01-01 00:00:00 ~ 2038-01-19 03:14:07 UTC”,timestamp 显示的值依赖于时区,和 datetime 相比,前者提供的值与时区有关系,后者则保留文本表示的日期和时间。

2.字符串类型
类型    范围    说明
char    1~255个字节    固定长度
varchar    字段存储所占字节数不能超过65535字节    可变长度
tinytext    最大长度255字节    可变长度
text    最大长度65535个字节    可变长度
mediumtext    最大长度16777215个字节    可变长度
longtext    最大长度4294967295个字节    可变长度
2.1 char
char 类型为定长字符串类型,适合存储很短的字符串,或者所有值都接近同一个长度,例如存储密码 md5 值,因为它是一个定长的值,对于经常变更的数据,char 比 varchar 更好,因为定长的 char 不容易产生碎片。

2.2 varchar
varchar 类型用于存储可变长度字符串,是最常见的字符串数据类型,对于短长度的字符串,它比定长的更为节省空间,varchar 节省空间对性能有帮助,varchar 类型的字符串有如下特点 :

字符串列的最大长度比平均长度大;

列的更新少,碎片问题较小;

使用了如 “UTF-8” 字符集,每个字符都使用不同的字节数来存储。

2.3 text
text 数据类型家族包括 : tinytext、text、mediumtext、longtext。 MysqL 把每个 text 值当做一个独立的对象处理。若 text 家族的值太大时,InnoDB 存储引擎会额外使用存储区域来进行存储,通常存储文章这样比较长的内容字段时,可选择 text 家族类型。

3.枚举值类型
类型    范围    说明
enum    几何数最大65535    枚举值类型,只能插入列表中指定的值
3.1 enum
enum 类型为枚举值类型,有时可以使用枚举值替代字符串,枚举列可以把一些不重复的字符串存储为一个预定义的集合。 MysqL 在存储枚举时非常紧凑,会根据列表值的数量压缩到 1 ~ 2 个字节,例如 ENUM (‘黄色’,‘黑色’,‘蓝色’,‘紫色’),枚举值类型字段的需求也可以使用 tinyint 类型来替代。

4.二进制类型
类型    范围    说明
tinyblob    最大长度255字节    可变长度
blob    最大长度65535个字节    可变长度
mediumblob    最大长度16777215个字节    可变长度
longblob    最大长度4294967295个字节    可变长度
4.1 blob
blob 数据类型家族包括 :tinybob、blob、mediumblob、longblob。和 text 家族一样,MysqL 把每个 text 值当做一个独立的对象处理。若 blob 家族的值太大时,InnoDB 存储引擎会额外使用存储区域来进行存储,blob 类型存储的是二进制数据,没有排序规则或字符集。

5.小结
本小节主要介绍了 MysqL 日期时间类型和字符串类型,需要注意的是时间类型 TIME、DATETIME、TIMESTAMP 存储大小具体取决于微秒值,例如 TIME 类型,当微秒不存在的时候如 “12:12:12” 字节数为 3 字节(微秒 0 字节)12:12:12.72表示微秒 2 位,总共4字节(微秒1字节),“12:12:12.6173” 表示微秒 4 位,总共 5 字节(微秒2字节),“12:12:12.627127” 表示微秒 6 位,总共 6 字节,微秒字节位数对表如下:

微秒位数    大小    举例
0    0字节    12:12:12
1,2    1字节    12:12:12.3 或 12:12:12.32
3,4    2字节    12:12:12.326 或 12:12:12.3653
5,6    3字节    12:12:12.35812 或 12:12:12.352161
另外还需要注意 char 类型是一种固定长度的类型,varchar 则是一种可变长度的类型,它们的区别是:char(M) 类型的数据列里,每个值都占用 M 个字节,如果某个长度小于 M,MysqL 就会在它的右边用空格字符补足.。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章