编辑
2026-04-01
undefined
00

目录

整数类型
浮点数类型
定点数类型
日期时间类型
字符类型
二进制类型

整数类型

  • tinyint:1个字节(微小整数)
  • smallint:2个字节(小整数)
  • mediumint:3个字节(中等大小整数)
  • int(integer):4个字节(普通大小整数)
  • bigint:8个字节(大整数)

浮点数类型

  • float:4个字节,单精度(最多5位小数)
  • double:8个字节,双精度(最多16位小数)

定点数类型

decimal:定点数类型,底层实际上采用字符串形式存储数字。语法:decimal(m, d),例如:decimal(3, 2)表示3个有效数字,2个小数(有效数字最多65个,小数位最多30个)。

日期时间类型

  • year:1个字节,只存储年,格式YYYY
  • time:3个字节,只存储时间,格式HH:MM
    / HHMMSS
  • date:3个字节,只存储年月日,格式:YYYY-MM-DD
  • datetime:8个字节,存储年月日+时分秒,格式:YYYY-MM-DD HH:MM
    (范围从公元1000年~公元9999年)
  • timestamp:4个字节,存储年月日+时分秒,格式:YYYY-MM-DD HH:MM
    (范围从公元1970年~公元2038年,TIMESTAMP会受时区影响)或者格式为 YYYYMMDDHHMMSS(采用这种格式不需要使用单引号,当然想使用单引号也可以)

字符类型

  • char(m)

  • m表示列长,范围是0~255个字符。保存时,在右侧填充空格以达到指定长度。例如,char(4)定义了一个固定长度的字符串列,包含的字符个数最大为4。当插入字符长度大于4,则报错(除非超过4个长度之后都是空格字符,则空格字符会自动被删除用来保证插入的成功)

  • 在InnoDB中存储char(m)类型数据时,如果数据实际占用空间不到m字节,则会使用空格填充到m,是将数据填充到m字节,而不是m字符。如果存储数据虽然字符数不到m,但占用空间已经超过m字节,则InnoDB不会再填充空格

  • varchar(m) m长度65535字节。例如,varchar(50)定义了一个最大长度为50的字符串,如果插入字符串只有10个,则实际存储的字符串为10个字符和一个字符串结束字符。varchar最大实际长度由最长行大小和使用字符集确定,而实际占用空间为字符串实际长度加1

  • 如果字段可存储的最大空间超过65535,则在SQL Mode严格模式下,SQL会报错,在非严格模式下,MySQL会自动将类型转换为Text

  • VARCHAR类型不会自动截断插入数据中尾部空格,也不会往字段尾部里填充空格

  • text类型

  • tinytext 表示长度为255字符的text列

  • text 表示长度为65535字符的text列

  • mediumtext 表示长度为16777215字符的text列

  • longtext 表示长度为 4294967295 或 4GB 字符的text列

  • enum类型 语法:<字段名> enum('值1', '值2', ...)。该字段插入值时,只能是指定的枚举值

  • set类型 语法:<字段名> set('值1', '值2', ...)。该字段插入值时,只能是指定的值。注意:值不可重复

二进制类型

BLOB类型:二进制大对象,可以存储图片、声音、视频等文件:

  • blob:小的,最大长度65535个字节
  • mediumblob:中等,最大长度16777215个字节
  • longblob:大的,最大长度4GB的字节

本文作者:a

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!