MySQL 数据类型概览 MySQL 的数据类型定义了表中每一列可存储的数据格式,直接影响存储效率、计算精度和查询性能。合理选择数据类型是数据库设计的关键步骤。以下分类详解常见类型及其应用场景。
一、数值类型:精确与近似的平衡 整数类型
用途:存储无小数的整数值(如ID、状态码)。子类型(按范围升序): TINYINT:1字节,范围 -128~127(有符号)或 0~255(无符号)。SMALLINT:2字节,范围 -32,768~32,767(有符号)。INT:4字节,范围 -21亿~21亿(有符号),适用于主键、计数器。BIGINT:8字节,支持超大整数(如金融交易ID)。关键属性: UNSIGNED:禁止负数,扩大正数范围。AUTO_INCREMENT:自动生成唯一递增值,常用于主键。浮点数与定点数
FLOAT:单精度浮点,4字节,约7位有效数字,适用科学计算但存在精度损失。DOUBLE:双精度浮点,8字节,约15位有效数字,精度优于FLOAT。DECIMAL:精确小数,以字符串形式存储,适合货币计算(如 DECIMAL(10,2) 表示整数8位+小数2位)。对比: 精度要求高 → DECIMAL;存储空间敏感 → FLOAT/DOUBLE。二、字符串类型:灵活存储文本与二进制 文本字符串
CHAR(n):定长字符串(1~255字符),存储时填充空格,检索速度快,适合固定长度数据(如性别CHAR(1))。VARCHAR(n):变长字符串(最多65,535字符),按实际长度存储,节省空间,适合长度波动大的数据(如用户名、地址)。TEXT系列: TINYTEXT(255字符)、TEXT(64KB)、MEDIUMTEXT(16MB)、LONGTEXT(4GB),用于大段文本(如文章内容),不支持默认值。二进制字符串
BINARY(n)/VARBINARY(n):类似CHAR/VARCHAR,但存储二进制数据(如图片哈希值)。BLOB系列:存储大型二进制文件(如图片、视频),分TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB。枚举与集合
ENUM:单选预定义值(如ENUM('男','女')),内部以整数存储,节省空间。SET:多选预定义值(如SET('音乐','阅读')),支持组合存储。三、日期与时间类型:精准记录时刻 类型格式大小典型场景DATEYYYY-MM-DD3字节生日、签约日期TIMEHH:MM:SS3字节营业时间、持续时间DATETIMEYYYY-MM-DD HH:MM:SS8字节订单时间、日志时间TIMESTAMPYYYY-MM-DD HH:MM:SS4字节自动更新时间戳(如updated_at)关键区别: TIMESTAMP 受时区影响,范围较小(1970~2038);DATETIME 范围更大(1000~9999年)。四、特殊类型:扩展应用场景 JSON类型:MySQL 5.7+支持,直接存储并验证JSON文档,支持路径查询(如WHERE data->>'$.name' = 'John')。空间类型:如GEOMETRY、POINT,用于地理信息系统(GIS)。
友情链接:
Copyright © 2022 剑侠盟·网游特攻队 All Rights Reserved.