数值类型有符号整数类型字节最小值最大值说明TINYINT1-128127微小整数SMALLINT2-3276832767小整数MEDIUMINT3-83886088388607中等整数INT/INTEGER4-21474836482147483647标准整数BIGINT8-2^632^63-1大整数无符号整数类型字节最小值最大值TINYINT UNSIGNED10255SMALLINT UNSIGNED2065535MEDIUMINT UNSIGNED3016777215INT UNSIGNED404294967295BIGINT UNSIGNED802^64-1注意尽量不使用unsigned对于int类型可能存放不下的数据int unsigned同样可能存放不 下与其如此还不如设计时将int类型提升为bigint类型。示例-- 有符号整数 age TINYINT, -- -128 到 127 user_id INT, -- 普通用户ID price INT, -- 价格分 -- 无符号整数 age TINYINT UNSIGNED, -- 0 到 255 post_id BIGINT UNSIGNED, -- 大范围ID views INT UNSIGNED, -- 访问量不会为负浮点类型浮点数类型字节精度说明FLOAT4单精度约 7 位有效数字DOUBLE8双精度约 15 位有效数字定点数类型说明格式DECIMAL精确小数DECIMAL(M, D)NUMERICDECIMAL 的别名同 DECIMAL参数说明M总位数精度1-65D小数位数0-30字符串类型类型最大长度说明存储方式CHAR255 字符定长字符串固定长度VARCHAR65535 字节变长字符串实际长度 1/2 字节BINARY255 字节定长二进制二进制数据VARBINARY65535 字节变长二进制二进制数据bit类型bit[(M)] : 位字段类型。M表示每个值的位数范围从1到64。如果M被忽略默认为1。枚举和集合ENUM类型-- 枚举单选 status ENUM(active, inactive, pending), gender ENUM(M, F, U), -- Male/Female/Unknown priority ENUM(low, medium, high, critical) -- 存储为数字索引1开始 -- 查询时可用字符串或数字 SELECT * FROM table WHERE status active; SELECT * FROM table WHERE status 1; -- 等效SET类型-- 集合多选最多64个值 tags SET(news, tech, sports, entertainment), permissions SET(read, write, delete, admin) -- 使用示例 INSERT INTO posts (tags) VALUES (news,tech); INSERT INTO users (permissions) VALUES (read,write); -- 查询包含某个值 SELECT * FROM posts WHERE FIND_IN_SET(news, tags) 0; SELECT * FROM users WHERE permissions LIKE %read%;集合查询使用find_ in_ set函数 find_in_set(sub,str_list) 如果 sub 在 str_list 中则返回下标如果不在返回0str_list 用逗号分隔的字符串。示例select find_in_set(a, a,b,c); select * from votes where find_in_set(登山, hobby);日期时间类型类型格式范围字节说明DATEYYYY-MM-DD1000-01-01 到 9999-12-313日期TIMEHH:MM:SS[.fraction]-838:59:59 到 838:59:593时间DATETIMEYYYY-MM-DD HH:MM:SS[.fraction]1000-01-01 00:00:00 到 9999-12-31 23:59:598日期时间TIMESTAMPYYYY-MM-DD HH:MM:SS[.fraction]1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC4时间戳YEARYYYY1901 到 21551年份示例-- 日期时间字段 birth_date DATE, -- 生日 meeting_time TIME, -- 会议时间 created_at DATETIME, -- 创建时间不会自动更新 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间 published_year YEAR, -- 出版年份 -- 带小数秒的精度 log_time DATETIME(6), -- 微秒精度 transaction_time TIMESTAMP(3) -- 毫秒精度总结数据类型推荐用途示例TINYINT状态、标志位status TINYINT(1)INTID、计数id INT UNSIGNEDBIGINT大数字 IDorder_id BIGINT UNSIGNEDDECIMAL金额、精确计算price DECIMAL(10,2)VARCHAR变长字符串name VARCHAR(50)CHAR定长编码uuid CHAR(36)TEXT长文本content TEXTDATETIME时间记录created_at DATETIMETIMESTAMP更新时间updated_at TIMESTAMPJSON结构化数据attributes JSONBOOLEAN布尔值is_active BOOLEAN