
可 以 加 上 UNSIGNED 属 性 , 表 示 数 据 是 无 符 号 的 , 即 非 负 整 数 。
长 度:整 数 类 型 可 以 被 指 定 长 度 , 例 如:INT(11)表 示 长 度 为 11 的 INT 类
型 。长度 在 大 多 数 场 景 是 没 有 意 义 的 ,它不 会 限 制 值 的 合 法 范 围 ,只会
影 响 显 示 字 符 的 个 数 ,而且 需 要 和 UNSIGNED ZEROFILL 属 性 配 合 使 用 才
有 意 义 。
例 子 ,假 定 类 型 设 定 为 INT(5),属性 为 UNSIGNED ZEROFILL,如果 用 户 插
入 的 数 据 为 12 的 话 , 那 么 数 据 库 实 际 存 储 数 据 为 00012。
�
�
2、 实 数 类 型 , 包 括 FLOAT、 DOUBLE、 DECIMAL。
DECIMAL 可 以 用 于 存 储 比 BIGINT 还 大 的 整 型 , 能 存 储 精 确 的 小 数 。
而 FLOAT 和 DOUBLE 是 有 取 值 范 围 的 ,并 支 持 使 用 标 准 的 浮 点 进 行 近 似
计 算 。
计 算 时 FLOAT 和 DOUBLE 相 比 DECIMAL 效 率 更 高 一 些 ,DECIMAL 你 可 以
理 解 成 是 用 字 符 串 进 行 处 理 。
�
�
3、 字 符 串 类 型 , 包 括 VARCHAR、 CHAR、 TEXT、 BLOB
VARCHAR 用 于 存 储 可 变 长 字 符 串 , 它 比 定 长 类 型 更 节 省 空 间 。
VARCHAR 使 用 额 外 1 或 2 个 字 节 存 储 字 符 串 长 度 。列 长 度 小 于 255 字 节
时 , 使 用 1 字 节 表 示 , 否 则 使 用 2 字 节 表 示 。
VARCHAR 存 储 的 内 容 超 出 设 置 的 长 度 时 , 内 容 会 被 截 断 。
CHAR 是 定 长 的 , 根 据 定 义 的 字 符 串 长 度 分 配 足 够 的 空 间 。
CHAR 会 根 据 需 要 使 用 空 格 进 行 填 充 方 便 比 较 。
CHAR 适 合 存 储 很 短 的 字 符 串 , 或 者 所 有 值 都 接 近 同 一 个 长 度 。
CHAR 存 储 的 内 容 超 出 设 置 的 长 度 时 , 内 容 同 样 会 被 截 断 。
�
使 用 策 略 :
对 于 经 常 变 更 的 数 据 来 说 , CHAR 比 VARCHAR 更 好 , 因 为 CHAR 不 容 易
产 生 碎 片 。
对 于 非 常 短 的 列 , CHAR 比 VARCHAR 在 存 储 空 间 上 更 有 效 率 。
使 用 时 要 注 意 只 分 配 需 要 的 空 间 , 更 长 的 列 排 序 时 会 消 耗 更 多 内 存 。
尽 量 避 免 使 用 TEXT/BLOB 类 型 ,查 询 时 会 使 用 临 时 表 ,导致 严 重 的 性 能
开 销 。
�
4、 枚 举 类 型 ( ENUM) , 把 不 重 复 的 数 据 存 储 为 一 个 预 定 义 的 集 合 。
有 时 可 以 使 用 ENUM 代 替 常 用 的 字 符 串 类 型 。