Files
NoteBook/MySQL/12. 字段类型.md
T
2025-09-27 11:25:49 +08:00

2.4 KiB

字段类型

  • 数值类型
    • 整型
      • TINYINT
      • SMALLINT
      • MEDIUMINT
      • INT
      • BIGINT
    • 浮点型
      • FLOAT
      • DOUBLE
    • 定点型
      • DECIMAL
  • 字符串类型
    • 常用
      • CHAR
      • VARCHAR
    • TEXT 类
      • TINYTEXT
      • TEXT
      • MEDIUMTEXT
      • LONGTEXT
    • BLOB 类
      • TINYBLOB
      • BLOB
      • MEDIUMBLOB
      • LONGBLOB
  • 日期时间类型
    • YEAR
    • TIME
    • DATE
    • DATETIME
    • TIMESTAMP

UNSIGNED 熟悉有什么用

  • ID
    • 不允许负值
    • 允许更高的上限范围

CHAR 和 VARCHAR 的区别

  • CHAR
    • 定长
    • 存储时填充空格
    • 适用:加密后密码、身份证号码
  • VACHAR
    • 需要额外一个或两个字节记录字符串长度
    • 适用:商品名称、用户昵称

VARCHAR(100) 和 VARCHAR(10) 的区别

  • 磁盘空间
    • 无区别
  • 内存空间
    • 有差异
    • 排序时按照最大长度进行

DECIMAL 和 FLOAT/DOUBLE 的区别

  • 定点数
    • 存储有精度要求的小数
    • 货币
  • 浮点数
    • 存储近似的小数值
    • 0.1f + 0.2f != 0.3f

为什么不推荐使用 TEXT 和 BLOB

类型 可存储大小 用途
TINYTEXT 0-255 字节 一般文本字符串
TEXT 0-65,535 字节 长文本字符串
MEDIUMTEXT 0-16,772,150 字节 较大文本数据
LONGTEXT 0-4,294,967,295 字节 极大文本数据
类型 可存储大小 用途
TINYBLOB 0-255 字节 短文本二进制字符串
BLOB 0-65KB 二进制字符串
MEDIUMBLOB 0-16MB 二进制形式的长文本数据
LONGBLOB 0-4GB 二进制形式的极大文本数据

数据库规范不推荐使用——

  • 不能有默认值
  • 检索效率低
  • 不能直接创建索引
  • 可能会消耗大量 IO 资源
  • 导致表上的 SQL 变慢

DATETIME 和 TIMESTAMP 的区别

  • DATETIME
    • 没有时区信息
  • TIMESTAMP
    • 有时区信息

NULL 和 '' 的区别

  • NULL
    • 不确定的值
    • 不等于任何值
    • 大多数聚合函数会忽略
  • ''
    • 空字符串
    • 已知的值

Boolean 类型如何表示

  • TINYINT(1)

手机号存储使用 INT 还是 VARCHAR

VARCHAR

  • 格式性
    • 前导零
    • 分隔符
    • 前缀
  • 非算数性
    • 不需要数学运算
  • 查询灵活性
    • LIKE 直观高效
  • 加密
    • 加密后长度无法用 INT/BIGINT 存储