MySQL 的数据类型2
发布时间:2023-02-28 13:05:09 所属栏目:MySql教程 来源:
导读:MysqL 的数据类型(2)
这一小节我们继续学习 MysqL 数据库的数据类型上一小节学习了整数类型和浮点类型,本小节介绍日期时间类型和字符串类型。
1.日期和时间类型
类型 大小 格式 范围
date 3字节
这一小节我们继续学习 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 就会在它的右边用空格字符补足.。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |