Skip to content

Latest commit

 

History

History
81 lines (56 loc) · 1.9 KB

File metadata and controls

81 lines (56 loc) · 1.9 KB

二进制类型

二进制类型用于保存原始字节数据,而不是普通文本。它们更适合图片、文件片段、哈希值、协议数据、二进制标识等场景。

MySQL 中常见的二进制类型包括:

  • BIT
  • BINARY
  • VARBINARY
  • BLOB

BIT类型

BIT 用于保存位值数据,适合表示开关、标志位等非常紧凑的数据。

示例:

CREATE TABLE feature_flag (
  id int NOT NULL AUTO_INCREMENT,
  enabled bit(1) NOT NULL DEFAULT b'0',
  PRIMARY KEY (id)
);

如果只需要表示“是/否”、“开/关”这类状态,也可以直接使用 TINYINT(1),业务中往往更直观。

BINARY和VARBINARY类型

BINARY 是定长二进制字符串,VARBINARY 是变长二进制字符串。

它们和 CHAR / VARCHAR 的区别在于:

  • 前者存储的是原始字节
  • 后者存储的是字符数据

适用场景:

  • 加密后的短字节串
  • 二进制摘要
  • 固定长度的字节标识

示例:

CREATE TABLE api_secret (
  id int NOT NULL AUTO_INCREMENT,
  token binary(16) NOT NULL,
  secret varbinary(64) NOT NULL,
  PRIMARY KEY (id)
);

BLOB类型

BLOB 用于保存较大的二进制对象(Binary Large Object)。

适合的场景:

  • 图片二进制内容
  • 文件内容
  • 音频片段
  • 序列化后的二进制数据

示例:

CREATE TABLE attachment (
  id int NOT NULL AUTO_INCREMENT,
  file_name varchar(100) NOT NULL,
  file_data blob,
  PRIMARY KEY (id)
);

需要注意,大对象直接存数据库虽然方便,但在很多系统里也可能带来备份、传输和查询性能压力,因此有些项目会把文件放对象存储,只在数据库里保存 URL 或元信息。

小结

二进制类型主要处理“字节”,而不是“字符”。短而固定的二进制数据可以考虑 BINARY,长度变化的可以用 VARBINARY,大块二进制内容则使用 BLOB