概述

  • 如果整型数据没有负数最好指定无符号类型。
  • 建议用 TINYINT 代替 ENUM、BITENUM、SET。
  • 不要用int(10)之类的方式指定字段显示宽度,没卵用。

    • 这样指定的宽度只是用于补0之类的操作,并不会影响占用空间。
    • 数值类型的占用空间大小,直接跟着类型固定的。

      整数类型

      TINYINT

  • 1字节

  • 范围:

    • 有符号:
      • (-128, 127)
    • 无符号
      • (0, 255)

        SMALLINT

  • 2字节

  • 范围:

    • 有符号
      • (-32768, 32767)
    • 无符号
      • (0, 65535)

        MEDIUMINT

  • 3字节

  • 范围:
    • 有符号
      • (-8 388 608, 8 388 607)
    • 无符号
      • (0, 16 777 215)

INT或INTEGER

  • 4字节
  • 范围:
    • 有符号
      • (-2 147 483 648, 2 147 483 647)
    • 无符号
      • (0, 4 294 967 295)

BIGINT

  • 8字节
  • 范围:
    • 有符号
      • (-9 233 372 036 854 775 808, 9 223 372 036 854 775 807)
    • 无符号
      • (0, 18 446 744 073 709 551 615)

浮点数类型

FLOAT

  • 4字节
  • 范围:

    • 有符号
      • (-3.402 823 466 E+38, 1.175 494 351 E-38)
      • 0
      • (1.175 494 351 E-38,3.402 823 466 351 E+38)
    • 无符号
      • 0
      • (1.175 494 351 E-38, 3.402 823 466 E+38)

        DOUBLE

  • 8字节

  • 范围:
    • 有符号
      • (1.797 693 134 862 315 7 E+308, 2.225 073 858 507 201 4 E-308)
      • 0
      • (2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E+308)
    • 无符号
      • 0
      • (2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E+308)

小数类型

  • 相比于浮点数是一种精确的存储方式
  • 可以存对准确度要求较高的小数,比如金额

    DECIMAL

  • 占用字节计算

    • 对DECIMAL(M,D) ,如果M>D,为M+2,否则为D+2
  • 范围依赖于M和D的值