运算符是MySQL中用于执行各种运算操作的符号,无论是基础的数值计算、条件判断,还是复杂的数据筛选,都离不开运算符的支持。熟练掌握各类运算符的用法,是编写高效准确SQL语句的基础。
MySQL运算符的主要分类
MySQL中的运算符可以按照功能分为五大类,分别是算术运算符、比较运算符、逻辑运算符、位运算符和赋值运算符,不同类型的运算符适用于不同的操作场景。
1. 算术运算符
算术运算符主要用于数值类型的计算,常见的算术运算符包括加、减、乘、除、取模等,具体说明如下:
| 运算符 | 说明 | 示例 |
|---|---|---|
| + | 加法运算 | 5 + 3 结果为8 |
| - | 减法运算 | 10 - 4 结果为6 |
| * | 乘法运算 | 3 * 7 结果为21 |
| / | 除法运算,返回浮点数结果 | 10 / 3 结果为3.3333 |
| % | 取模运算,返回余数 | 10 % 3 结果为1 |
| DIV | 整除运算,返回商的整数部分 | 10 DIV 3 结果为3 |
下面是算术运算符的使用示例,假设我们有一个商品表product,其中price字段存储商品价格,discount字段存储折扣比例:
-- 计算商品折后价格,原价乘以(1-折扣比例) SELECT price, discount, price * (1 - discount) AS final_price FROM product; -- 计算订单总金额,假设order表有num数量和unit_price单价字段 SELECT num, unit_price, num * unit_price AS total_amount FROM order;
2. 比较运算符
比较运算符用于判断两个值的大小关系,返回的结果是布尔值1(真)或0(假),常见的比较运算符如下:
=:等于,判断两个值是否相等<>或!=:不等于,判断两个值是否不相等>:大于<:小于>=:大于等于<=:小于等于BETWEEN...AND...:判断值是否在某个区间内IN:判断值是否在指定集合中IS NULL:判断值是否为NULLLIKE:模糊匹配,配合%和_通配符使用
比较运算符的使用示例:
-- 查询价格大于100的商品
SELECT * FROM product WHERE price > 100;
-- 查询价格在50到200之间的商品
SELECT * FROM product WHERE price BETWEEN 50 AND 200;
-- 查询分类为手机或电脑的商品
SELECT * FROM product WHERE category IN ('手机', '电脑');
-- 查询名称为华为开头的商品
SELECT * FROM product WHERE product_name LIKE '华为%';
-- 查询备注为空的员工信息
SELECT * FROM employee WHERE remark IS NULL;
3. 逻辑运算符
逻辑运算符用于组合多个条件判断,返回布尔值结果,常见的逻辑运算符有AND、OR、NOT:
AND:逻辑与,两个条件都为true时返回trueOR:逻辑或,两个条件有一个为true时返回trueNOT:逻辑非,对条件结果取反
逻辑运算符的使用示例:
-- 查询价格大于100且库存大于50的商品 SELECT * FROM product WHERE price > 100 AND stock > 50; -- 查询价格小于50或者折扣大于0.5的商品 SELECT * FROM product WHERE price < 50 OR discount > 0.5; -- 查询不在手机分类的商品 SELECT * FROM product WHERE NOT category = '手机';
4. 位运算符
位运算符是对二进制位进行操作的运算符,一般用于整数类型的字段,常见的位运算符有&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)。
位运算符的使用示例:
-- 按位与运算,5的二进制是101,3的二进制是011,按位与结果为001即1 SELECT 5 & 3; -- 结果为1 -- 左移运算,5左移1位,二进制101左移1位为1010即10 SELECT 5 << 1; -- 结果为10
5. 赋值运算符
MySQL中唯一的赋值运算符是:=,主要用于在SET语句或者UPDATE语句中给变量或者字段赋值。
-- 给用户变量赋值 SET @discount_rate := 0.8; -- 更新商品折扣为指定值 UPDATE product SET discount = 0.7 WHERE id = 1;
运算符使用的注意事项
- NULL值参与运算的结果:除了
IS NULL、<=>(安全等于)运算符外,其他运算符和NULL运算的结果都为NULL。 - 运算符优先级:算术运算符优先级高于比较运算符,比较运算符优先级高于逻辑运算符,不确定优先级时可以用小括号包裹表达式明确运算顺序。
- 字符串参与算术运算时,MySQL会自动将字符串转换为数值,如果转换失败则按0处理。
注意:=运算符在SET语句中表示赋值,在WHERE条件中表示等于判断,不要混淆使用场景。