MySQL 中常用的字段类型总结

整型

MySQL 可以为整数类型指定宽度,例如 INT(11),对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了 MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数。对于存储和计算来说,INT(1)INT(20) 是相同的。只有使用 ZEROFILL 属性时,指定长度才有意义(按照指定长度进行零的填充)。

所以,在不使用 ZEROFILL 时,不需要指定整形的长度。

  • TINYINT
    空间占用为 1 byte ( 8 bit ) 。使用无符号类型(UNSIGNED)时,8 位都是 1 时所表示的十进制数为 255,所以其可存储的范围为 0 ~ 255。使用有符号类型时,范围为 -128 ~ 127
  • SMALLINT
    空间占用为 2 byte,可存储的无符号范围为 0 ~ 65535,有符号范围为 -32768 ~ 32767
  • MEDIUMINT
    空间占用为 3 byte,可存储的无符号范围为 0 ~ 16777215,有符号范围为 -8388608 ~ 8388607
  • INT
    空间占用为 4 byte,可存储的无符号范围为 0 ~ 4294967295,有符号范围为 -2147483648 ~ 2147483647
  • BIGINT
    空间占用为 8 byte,可存储的无符号范围为 0 ~ 18446744073709551615,有符号范围为 -9223372036854775808 ~ 9223372036854775807

参考链接:MySQL 整型长度的含义

文本

  • CHAR

    • 定长字符串,设定该类型字段时需要指定长度,存储时会向右边补充空格到指定长度。
    • 该类型所指定的长度是指字符的个数(无论中文/英文/中文标点/英文标点,只要是一个符号就会占用一个个数),而不是字符串所占的字节数。 例如,CHAR(6) 类型的字段用于存储字符串 “Hello!” 和 “你好,世界!” 都是可以的。
    • 该类型可设定的最大长度255 个字符。
  • VARCHAR

    • 变长字符串,设定该类型字段时同样需要指定长度,长度同样是指最多可存储的字符个数。
    • 可设定的最大有效长度取决于行长度限制,详见:MySQL中varchar最大长度是多少
  • TINYTEXT

    • 最多可存储 255 byte 的文本内容,也就是说在 UTF8 编码下可以存储 255 个英文字母/英文符号,而汉字/中文符号最多只能存储 85255/3)个。以下类型同样可推算。
  • TEXT

    • 最多可存储 65535 byte 约等于 65KB 的文本内容。
  • MEDIUMTEXT

    • 最多可存储 16777215 byte 约等于 16MB 的文本内容。
  • LONGTEXT

    • 最多可存储 4294967295 byte 约等于 4GB 的文本内容。

日期与时间

  • TIMESTAMP

    • 时间戳,范围从 1970-01-01 00:00:01 UTC2038-01-09 03:14:07 UTCUTC 转换成东八区时间需要 +08:00),存储为自纪元(1970-01-01 00:00:00 UTC)起的秒数。
    • 虽然内部存储的是秒数,但是在读写该类型字段时都是以日期时间字符串的形式进行的,例如,查询到的实际是一个字符串 '2019-06-11 23:18:45',执行 INSERTUPDATE 操作时,也是需要传入一个日期时间字符串。
    • 时间戳类型也可以指定长度,用以表示秒级以下的精度,最高可设为 6。例如,当精度为 5 时查询或传入的字符串形式为 '2019-06-12 13:22:21.35927'

JSON

用于存储 JSON 文本,不可以指定长度,不可以设定默认值。

    原文作者:Xavier
    原文地址: https://segmentfault.com/a/1190000019447574
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞