数据类型详解:选择合适的数据类型

引言 提出问题 上一篇我们学会了创建表,但在定义列时遇到了很多数据类型: 存储用户ID,用 INT 还是 BIGINT? 存储金额,为什么用 DECIMAL 而不是 FLOAT? 存储用户名,VARCHAR(50) 和 VARCHAR(255) 有什么区别? 存储日期,用 DATE、DATETIME 还是 TIMESTAMP? CHAR 和 VARCHAR 怎么选择? 选择错误的数据类型会导致: 浪费存储空间(INT能搞定的用BIGINT) 性能下降(VARCHAR(255)比VARCHAR(50)慢) 精度丢失(FLOAT存金额会有误差) 查询出错(日期类型选错导致时区问题) 这篇文章将帮你理解MySQL数据类型的底层原理,学会正确选型! 数据类型分类 MySQL数据类型分为五大类: 分类 常用类型 应用场景 数值类型 INT, BIGINT, DECIMAL, FLOAT 年龄、金额、计数器 字符串类型 CHAR, VARCHAR, TEXT 用户名、描述、文章内容 日期时间类型 DATE, TIME, DATETIME, TIMESTAMP 创建时间、生日 二进制类型 BLOB, BINARY 图片、文件(不推荐存数据库) JSON类型 JSON 配置项、扩展字段 数值类型 整数类型 五种整数类型 类型 存储空间 有符号范围 无符号范围 典型应用 TINYINT 1字节 -128 ~ 127 0 ~ 255 年龄、状态码 SMALLINT 2字节 -32,768 ~ 32,767 0 ~ 65,535 分类ID MEDIUMINT 3字节 -838万 ~ 838万 0 ~ 1677万 较少使用 INT 4字节 -21亿 ~ 21亿 0 ~ 42亿 用户ID、商品ID BIGINT 8字节 -922京 ~ 922京 0 ~ 1844京 订单ID、大数据 实战示例 CREATE TABLE user_profile ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID(无符号,0-42亿)', age TINYINT UNSIGNED COMMENT '年龄(0-255)', score SMALLINT DEFAULT 0 COMMENT '积分(-32768~32767)', view_count BIGINT UNSIGNED DEFAULT 0 COMMENT '浏览量(大数据)' ); 有符号 vs 无符号(UNSIGNED) -- 有符号(默认) CREATE TABLE test1 (num INT); -- 范围:-2147483648 ~ 2147483647 -- 无符号(推荐用于ID、计数器) CREATE TABLE test2 (num INT UNSIGNED); -- 范围:0 ~ 4294967295 选择原则: ...

2025-11-20 · maneng

如约数科科技工作室

浙ICP备2025203501号

👀 本站总访问量 ...| 👤 访客数 ...| 📅 今日访问 ...