以下是 MySQL 中各种运算符的介绍及代码示例:
算术运算符
算术运算符用于执行基本的数学运算,包括加、减、乘、除、取模(取余)。
-- 创建一个名为 operator_demo 的表
CREATE TABLE operator_demo (a INT,b INT
);-- 插入示例数据
INSERT INTO operator_demo (a, b) VALUES (10, 3);-- 加法运算符
SELECT a + b AS addition FROM operator_demo;-- 减法运算符
SELECT a - b AS subtraction FROM operator_demo;-- 乘法运算符
SELECT a * b AS multiplication FROM operator_demo;-- 除法运算符
SELECT a / b AS division FROM operator_demo;-- 取模运算符(取余)
SELECT a % b AS modulo FROM operator_demo;-- 删除表
DROP TABLE operator_demo;
比较运算符
比较运算符用于比较两个值,结果为布尔值(True 或 False),常用于 WHERE
子句中筛选数据。
-- 创建一个名为 comparison_demo 的表
CREATE TABLE comparison_demo (num INT
);-- 插入示例数据
INSERT INTO comparison_demo (num) VALUES (5), (10), (15);-- 等于运算符
SELECT * FROM comparison_demo WHERE num = 10;-- 不等于运算符
SELECT * FROM comparison_demo WHERE num!= 10;-- 大于运算符
SELECT * FROM comparison_demo WHERE num > 10;-- 小于运算符
SELECT * FROM comparison_demo WHERE num < 10;-- 大于等于运算符
SELECT * FROM comparison_demo WHERE num >= 10;-- 小于等于运算符
SELECT * FROM comparison_demo WHERE num <= 10;-- BETWEEN 运算符,检查一个值是否在两个值之间
SELECT * FROM comparison_demo WHERE num BETWEEN 5 AND 15;-- IN 运算符,检查一个值是否在一组值中
SELECT * FROM comparison_demo WHERE num IN (5, 10);-- IS NULL 运算符,检查一个值是否为 NULL
INSERT INTO comparison_demo (num) VALUES (NULL);
SELECT * FROM comparison_demo WHERE num IS NULL;-- 删除表
DROP TABLE comparison_demo;
逻辑运算符
逻辑运算符用于组合多个条件,主要包括 AND
、OR
和 NOT
。
-- 创建一个名为 logic_demo 的表
CREATE TABLE logic_demo (x INT,y INT
);-- 插入示例数据
INSERT INTO logic_demo (x, y) VALUES (5, 10), (15, 20), (25, 30);-- AND 运算符,同时满足两个条件
SELECT * FROM logic_demo WHERE x > 10 AND y > 15;-- OR 运算符,满足其中一个条件即可
SELECT * FROM logic_demo WHERE x > 10 OR y > 30;-- NOT 运算符,取反条件
SELECT * FROM logic_demo WHERE NOT (x > 10);-- 删除表
DROP TABLE logic_demo;
位运算符
位运算符对二进制数进行操作,包括 &
(按位与)、|
(按位或)、^
(按位异或)、~
(按位取反)、<<
(左移)和 >>
(右移)。
-- 创建一个名为 bitwise_demo 的表
CREATE TABLE bitwise_demo (m INT,n INT
);-- 插入示例数据
INSERT INTO bitwise_demo (m, n) VALUES (5, 3);-- 按位与运算符
SELECT m & n AS bitwise_and FROM bitwise_demo;-- 按位或运算符
SELECT m | n AS bitwise_or FROM bitwise_demo;-- 按位异或运算符
SELECT m ^ n AS bitwise_xor FROM bitwise_demo;-- 按位取反运算符
SELECT ~m AS bitwise_not FROM bitwise_demo;-- 左移运算符
SELECT m << 1 AS left_shift FROM bitwise_demo;-- 右移运算符
SELECT m >> 1 AS right_shift FROM bitwise_demo;-- 删除表
DROP TABLE bitwise_demo;
运算符优先级
在一个表达式中使用多个运算符时,运算符的优先级决定了运算的顺序。一般来说,算术运算符的优先级高于比较运算符,比较运算符高于逻辑运算符,逻辑运算符中 NOT
的优先级最高,然后是 AND
,最后是 OR
。可以使用括号 ()
来改变运算顺序。
-- 创建一个名为 priority_demo 的表
CREATE TABLE priority_demo (a INT,b INT,c INT
);-- 插入示例数据
INSERT INTO priority_demo (a, b, c) VALUES (5, 10, 15);-- 示例 1:先进行加法运算,再比较大小
SELECT * FROM priority_demo WHERE a + b > c;-- 示例 2:使用括号改变优先级,先比较大小,再进行逻辑运算
SELECT * FROM priority_demo WHERE (a > b) AND (b < c);-- 删除表
DROP TABLE priority_demo;
代码解释:
- 算术运算符:
+
:将两个操作数相加。-
:将第一个操作数减去第二个操作数。*
:将两个操作数相乘。/
:将第一个操作数除以第二个操作数。%
:取第一个操作数除以第二个操作数的余数。
- 比较运算符:
=
:检查两个操作数是否相等。!=
或<>
:检查两个操作数是否不相等。>
:检查第一个操作数是否大于第二个操作数。<
:检查第一个操作数是否小于第二个操作数。>=
:检查第一个操作数是否大于或等于第二个操作数。<=
:检查第一个操作数是否小于或等于第二个操作数。BETWEEN
:检查一个值是否在两个值之间。IN
:检查一个值是否在一组值中。IS NULL
:检查一个值是否为NULL
。
- 逻辑运算符:
AND
:仅当两个条件都为真时,结果为真。OR
:只要有一个条件为真,结果为真。NOT
:反转条件的结果。
- 位运算符:
&
:按位与操作。|
:按位或操作。^
:按位异或操作。~
:按位取反操作。<<
:左移操作。>>
:右移操作。
- 运算符优先级:
- 可以使用括号
()
来明确指定运算顺序,否则按照默认的运算符优先级进行计算。
- 可以使用括号
以上示例代码展示了 MySQL 中各种运算符的基本用法和运算顺序,你可以根据实际需求灵活运用这些运算符,在 WHERE
子句中筛选数据,或在计算表达式中使用它们。
请注意,以上代码基于 MySQL 8.0 运行,不同的 MySQL 版本在某些细节上可能会略有不同。
同时,在使用运算符时,请确保数据类型的兼容性,避免因数据类型不匹配而导致的错误。