MYSQL--------MYSQL中的运算符

以下是 MySQL 中各种运算符的介绍及代码示例:

算术运算符

算术运算符用于执行基本的数学运算,包括加、减、乘、除、取模(取余)。

sql 复制代码
-- 创建一个名为 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 子句中筛选数据。

sql 复制代码
-- 创建一个名为 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;

逻辑运算符

逻辑运算符用于组合多个条件,主要包括 ANDORNOT

sql 复制代码
-- 创建一个名为 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;

位运算符

位运算符对二进制数进行操作,包括 &(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)和 >>(右移)。

sql 复制代码
-- 创建一个名为 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。可以使用括号 () 来改变运算顺序。

sql 复制代码
-- 创建一个名为 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 版本在某些细节上可能会略有不同。

同时,在使用运算符时,请确保数据类型的兼容性,避免因数据类型不匹配而导致的错误。

相关推荐
小镇学者3 小时前
【PHP】导入excel 报错Trying to access array offset on value of type int
android·php·excel
一笑的小酒馆6 小时前
Android11 Launcher3去掉抽屉改为单层
android
在未来等你6 小时前
SQL进阶之旅 Day 23:事务隔离级别与性能优化
sql·mysql·postgresql·高并发·数据一致性·数据库优化·事务隔离
海棠一号6 小时前
JAVA理论第七章-MYSQL
java·数据库·mysql
louisgeek8 小时前
Git 根据不同目录设置不同账号
android
qq_390934749 小时前
MySQL中的系统库(简介、performance_schema)
android·数据库·mysql
胡斌附体9 小时前
mysql为什么一个表中不能同时存在两个字段自增
数据库·mysql·自增字段·auto increment
AllWe$9 小时前
十、MySQL InnoDB引擎底层解析
java·数据库·mysql
小前端大牛马9 小时前
mysql-innoDB存储引擎事务的原理
数据库·mysql