mysql中字段类型有哪些_mysql字段类型基础说明

7次阅读

MySQL 字段类型分三类:数值型(含整数、浮点、DECIMAL、BIT)、日期 / 时间型(DATE、TIME、DATETIME、TIMESTAMP、YEAR)和字符串型(CHAR、VARCHAR、TEXT/BLOB、ENUM/SET),配合 NOT NULL、DEFAULT 等属性优化存储与查询。

mysql 中字段类型有哪些_mysql 字段类型基础说明

MySQL 字段类型主要分三类:数值型、日期 / 时间型、字符串型,每类下有多个具体类型,选对类型直接影响存储效率、查询性能和数据准确性。

数值类型:按范围和精度区分

整数类包括 TINYINT(1 字节 ,-128~127)、SMALLINT(2 字节)、MEDIUMINT(3 字节)、INT(4 字节,最常用)、BIGINT(8 字节,适合 ID、计数器等超大值)。都支持 UNSIGNED(无符号)属性,可将负数范围转为更大正数空间,比如 TINYINT UNSIGNED 可存 0~255。

浮点类有 FLOAT(单精度,约 7 位有效数字)、DOUBLE(双精度,约 15 位),适合科学计算但存在精度误差;需要精确计算(如金额)必须用 DECIMAL(M,D),例如 DECIMAL(10,2) 表示共 10 位、小数占 2 位,全程无精度丢失。

特殊类型 BIT(M) 用于位操作,如 BIT(1) 存布尔状态(0/1),节省空间;BOOL 是 TINYINT(1) 的别名,语义更清晰。

日期与时间类型:注意语义和自动行为差异

DATE 只存日期(YYYY-MM-DD),适合生日、上线日等纯日期场景;TIME 存时间(HH:MM:SS),范围支持负值,可用于时长计算;DATETIME 是完整时间戳(YYYY-MM-DD HH:MM:SS),范围广(1000–9999 年),不随时区变化。

TIMESTAMP 本质是 Unix 时间戳(1970–2038),会自动转换为当前时区值,且 INSERT/UPDATE 时可设为自动填充(如 CURRENT_TIMESTAMP),适合记录创建 / 修改时间;YEAR 存年份,支持 YEAR(2) 或 YEAR(4),但推荐用 YEAR(4) 避免二位年歧义。

字符串类型:长度、变长与用途要匹配

CHAR(L) 固定长度,L 为字符数(非字节数),最大 255,适合长度稳定的数据,如性别(CHAR(1))、国家代码(CHAR(2));存入短于 L 的值会补空格,检索时自动去尾空格。

VARCHAR(L) 可变长度,同样以字符为单位,最大 65535(受行总长限制),实际占用空间 = 内容字节数 + 1 或 2 字节长度标识,适合昵称、地址等长度波动大的字段。

大文本用 TEXT 系列(TINYTEXT/MEDIUMTEXT/TEXT/LONGTEXT),不需指定长度,适合文章、日志;二进制大对象用 BLOB 系列,如图片、文件;ENUMSET 适用于有限固定选项,如状态(’draft’,’published’,’archived’),前者单选,后者多选。

字段属性:配合类型增强约束与行为

常见属性包括:NOT NULL(禁止空值)、DEFAULT(默认值,支持函数如 CURRENT_TIMESTAMP)、AUTO_INCREMENT(仅用于整数主键,自增)、PRIMARY KEY(唯一 + 非空)、UNIQUE(值不可重复)、ZEROFILL(配合 INT(M) 显示前导零,如 INT(5) ZEROFILL 存 7 得 00007)。

注意:INT(11) 中的 11 不是存储长度限制,只是显示宽度,仅在配合 ZEROFILL 时生效;真正决定取值范围的是类型本身(如 INT 总是 ±21 亿)。

text=ZqhQzanResources