MySQL数据类型

MySQL中的数据类型以及使用时需要注意的地方记录如下



数字类型

数字类型包括:

  • TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
  • DECIMAL
类型 长度(Byte) 最小值(SIGNED/UNSIGNED) 最大值(SIGNED/UNSIGNED)
TINYINT 1 -128 127
    0 255
SMALLINT 2 -32768 32767
    0 65535
MEDIUMINT 3 -8388608 8388607
    0 16777215
INT 4 -2147483648 2147483647
    0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
    0 18446744073709551615

DECIMAL(M,D):

  1. M 代表精度,即总共的位数,范围1-65
  2. D 代表小数部分的位数,范围0-30,但不能大于M
  3. 如果插入数值超过M,则只显示该精度内的最大值
  4. price DECIMAL(5, 2) 表示最大值为 999.99

下面这段代码注意:

    `status` TINYINT(4) UNSIGNED NOT NULL AUTO_INCREMENT
  1. 整数类型后面的长度表示显示数字时的宽度。
  2. 尽量使用 TINYINT 表示状态

日期类型

  • DATE : 3字节, 'YYYY-MM-DD'格式, 范围是 '1000-01-01' ~ '9999-12-31'。如果只记录日期, 存储空间、性能都要比varchar(10)要好。

  • TIMESTAMP : 4字节,'YYYY-MM-DD HH:MM:SS'格式, 范围是'1970-01-01 00:00:01' ~ '2038-01-19 03:14:07'

  • DATETIME : 8字节,'YYYY-MM-DD HH:MM:SS'格式, 范围是'1000-01-01 00:00:00' ~ '9999-12- 31 23:59:59'

注意:

  1. DATETIME在5.6之后占5个字节
  2. 一个表中日期类只能存在一个定义默认值为 CURRENT_TIMESTAMP的 timestamp列(5.6之后可以多个)

字符类型

  • CHAR : 定长文本字符类型
  • VARCHAR: 变长文本字符类型
  • TEXT : 大变长文本字符类型
  • BINARY : 类似于char, 变长二进制字符类型
  • VARBINARY : 类似于varchar, 变长二进制字符类型
  • BLOB : 大变长二进制字符类型

注意:

  1. VARCHAR 类型最多能存储65535个字节长度的数据,如果采用 UTF8 编码,则每个字符占3字节,即最大长度为 65535/3=21845 个字符
  2. VARCHAR(4) 表示的是4个字符,而不是字节,一个字母和一个汉字都是一个字符
  3. VARCHAR 开头会占用1到2个字节来存储字符串实际长度(长度超过255时要2个字节),最大长度不超过65535。不会影响上面所说的字符长度。