MySQL 数据类型与运算符详解
本文将系统梳理 MySQL 数据类型、运算符 以及 存储引擎,帮助初学者更高效地使用 MySQL。
一、数据类型
MySQL 提供了多种数据类型,主要分为以下几类:
1. 整数类型
TINYINT(m):1字节,范围 -128 ~ 127
SMALLINT(m):2字节,范围 -32768 ~ 32767
MEDIUMINT(m):3字节,范围 -8388608 ~ 8388607
INT(m):4字节,范围 -2147483648 ~ 2147483647
BIGINT(m):8字节,范围 ±9.22×10^18
特殊属性:AUTO_INCREMENT
用于生成唯一标识符或顺序值。
只能应用于 整数类型,通常结合 PRIMARY KEY 或 UNIQUE KEY。
默认从 1 开始,每次递增 1。
注意:如果字段定义了 UNSIGNED
,则最大值翻倍,且最小值为 0。
2. 小数类型
FLOAT:单精度浮点数,4字节,存储近似值。
DOUBLE:双精度浮点数,8字节,存储近似值。
DECIMAL(M,D):定点数,以字符串形式存储,适合需要高精度的场景(如货币)。
参数说明
M:数字总位数(1~65,默认10)
D:小数点后的位数(0~30,且不能大于M,默认0)
示例:DECIMAL(5,2)
可存储范围为 -999.99 -- 999.99
3. 字符串类型
CHAR(n):固定长度字符串(0~255)
VARCHAR(n):可变长度字符串(0~65535)
TEXT 系列:
TINYTEXT:最大 255 字符
TEXT:最大 65535 字符
MEDIUMTEXT:最大 2^24-1 字符
LONGTEXT:最大 2^32-1 字符
BLOB 系列(二进制大对象):
TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
区别
CHAR:长度固定,未填满会用空格补齐。
VARCHAR:长度可变,按实际长度+1存储。
BLOB:适合存储二进制数据,如图片、文件。
4. 日期和时间类型
DATE:YYYY-MM-DD
DATETIME:YYYY-MM-DD HH:MM:SS
TIMESTAMP:时间戳,自动记录时间
TIME:HH:MM:SS
YEAR:YYYY
MySQL 允许多种日期格式输入,非法值会存储为 0000-00-00
。
5. 其他数据类型
ENUM:枚举类型,最多 65535 个值(适合单选字段,如性别)。
SET:集合类型,最多 64 个元素(适合多选字段,如爱好)。
二进制类型:BINARY、VARBINARY
空间类型:Geometry、Point、Polygon 等
二、MySQL 运算符
MySQL 提供丰富的运算符,用于数据查询和处理。
1. 算术运算符
+
加法-
减法*
乘法/
除法(自然除)DIV
整除(只取整数部分)%
或MOD(a,b)
取余数
2. 比较运算符
=
相等<=>
安全相等(NULL 也可比较)<>
或!=
不等<
、<=
、>
、>=
IS NULL
、IS NOT NULL
IN (…)/NOT IN (… )
BETWEEN a AND b
LIKE
模糊匹配REGEXP
正则匹配
3. 逻辑运算符
AND
/&&
OR
/||
NOT
/!
XOR
异或
4. 位运算符
|
按位或&
按位与^
按位异或~
按位取反<<
左移>>
右移
5. 运算符优先级
优先级高的先执行
同级运算符从左到右依次执行
可使用
()
强制指定优先级
三、存储引擎简介
MySQL 采用 插件式存储引擎,不同引擎在性能、事务、索引支持等方面存在差异。
1. 查看支持的存储引擎
SHOW ENGINES;
2. 常见存储引擎
InnoDB(默认):支持事务、行锁、外键,适合高并发场景。
MyISAM:不支持事务,查询速度快,占用空间小。
Memory:数据存放在内存中,适合临时数据、高速查询。
CSV:以
.csv
格式存储,可直接导入导出,方便与 Excel 交互。
3. 数据表文件说明
InnoDB:一个
.frm
文件(表结构)+ibdata1
文件(数据、索引)。MyISAM:三个文件:
.frm
(表结构).MYD
(数据文件).MYI
(索引文件)
四、总结
数据类型选择:尽量精确匹配业务需求,数值型选取合适范围,货币类推荐
DECIMAL
。运算符使用:注意比较运算中的
NULL
,避免浮点数精度误差。存储引擎选择:事务场景用 InnoDB,读密集型可考虑 MyISAM,临时计算可用 Memory。
掌握这些基础知识,可以让 MySQL 使用更加高效与稳定。