MySQL运算符

目录

一、mysql运算符

[1. 算数运算符](#1. 算数运算符)

[2. 比较运算符](#2. 比较运算符)

[2.1 等号运算符(=)](#2.1 等号运算符(=))

[2.2 不等于运算符 !=](#2.2 不等于运算符 !=)

3.非符号类型的运算符

[3.1 空运算 IS NULL、 IS NOT NULL、 ISNULL](#3.1 空运算 IS NULL、 IS NOT NULL、 ISNULL)

[3.2 区间查询 BETWEEN](#3.2 区间查询 BETWEEN)

[3.3 包含查询 IN、 NOT IN](#3.3 包含查询 IN、 NOT IN)

3.4模糊查询LIKE

[4. 逻辑运算符](#4. 逻辑运算符)

[4.1 AND(逻辑与)、OR(逻辑或)](#4.1 AND(逻辑与)、OR(逻辑或))

[4.2 NOT(逻辑非)](#4.2 NOT(逻辑非))


一、mysql运算符

1. 算数运算符

算术运算符
运算符 名称 作用 示例
+ 计算两个值或表达式的和 SELECT A + B
- 计算两个值或表达式的差 SELECT A-B
* 乘法 计算两个值或表达式的乘积 SELECT A*B
/或DIV 除法 计算两个值或表达式的商 SELECT A/B

• ⼀个整数类型的值对整数进行加法和减法操作 ,结果还是⼀个整数;

• ⼀个整数类型的值对浮点数进行加法和减法操作 ,结果是⼀个浮点数;

• 加法和减法的优先级相同 ,进行先加后减操作与进行先减后加操作的结果是⼀样的;

• 在Java中 ,+ 的左右两边如果有字符串 ,那么表示字符串的拼接。但是在MySQL中 + 只表示数值相加。如果遇到非数值类型 ,先尝试转成数值 ,如果转失败 ,就按 0 计算。(补充: MySQL 中字符串拼接要使用字符串函数CONCAT()实现)

• ⼀个数乘以整数1和除以整数1后仍得原数;

• ⼀个数乘以浮点数1和除以浮点数1后变成浮点数 ,数值与原数相等;

• ⼀个数除以整数后 ,不管是否能除尽 ,结果都为⼀个浮点数;

• ⼀个数除以另⼀个数 ,除不尽时 ,结果为⼀个浮点数 ,并保留到小数点后4位;

• 乘法和除法的优先级相同 ,进行先乘后除操作与先除后乘操作 ,得出的结果相同。

• 在数学运算中 ,0不能用作除数 ,在MySQL中 ,⼀个数除以0为NULL。

2. 比较运算符

比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL

|---------|------|-------------------|---------------------------------|
| 比较运算符 ||||
| 运算符 | 名称 | 作用 | 示例 |
| = | 等于 | 判断两个值,字符串或表达式是否相等 | SELECT C FROM TABLE WHERE A=B |
| !=或<> | 不等于 | 判断两边是否不相等 | SELECT C FROM TABLE WHERE A!=B |
| < | 小于 | 判断前边是否小于后边 | SELECT C FROM TABLE WHERE A<B |
| <= | 小于等于 | 判断前边是否小于等于后边 | SELECT C FROM TABLE WHERE A<=B |
| > | 大于 | 判断前边是否大于后边 | SELECT C FROM TABLE WHERE A>B |
| >= | 大于等于 | 判断前边是否大于等于后边 | SELECT C FROM TABLE WHERE A>=B |

2.1 等号运算符(=)

判断等号两边的值、字符串或表达式是否相等 ,如果相等则返回1 ,不相等则返回 0。

在使用等号运算符时 ,遵循如下规则:

  • 如果等号两边的值、字符串或表达式都为字符串 ,则MySQL会按照字符串进行比较 ,其比较的是每个字符串中字符的ANSI编码是否相等。
  • 如果等号两边的值都是整数 ,则MySQL会按照整数来⽐较两个值的大小。
  • 如果等号两边的值⼀个是整数 ,另⼀个是字符串 ,则MySQL会将字符串转化为数字进行比较。
  • 如果等号两边的值、字符串或表达式中有⼀个为NULL ,则比较结果为NULL。

2.2 不等于运算符 !=

不等于运算符(<>和!=)用于判断两边的数字、字符串或者表达式的值是否不相等 ,如果不相等 则返回1 ,相等则返回0。

不等于运算符不能判断NULL值。如果两边的值有任意⼀个为NULL ,或两边都为NULL ,则结果为NULL。

3.非符号类型的运算符

|-------------|---------|--------------------|---------------------------------------------|
| 非符号运算符 ||||
| 运算符 | 名称 | 作用 | 示例 |
| is null | 空运算符 | 判断值,字符串或表达式是否为空 | SELECT C FROM TABLE WHERE A IS NULL |
| is not null | 非空运算符 | 判断值,字符串或表达式是否不为空 | SELECT C FROM TABLE WHERE A IS NOT NULL |
| between and | 区间运算符 | 判断一个值是否在两值之间 | SELECT C FROM TABLE WHERE A BETWEEN B AND D |
| in | 属于运算符 | 判断一个值是否属于列表中的任意一个值 | SELECT C FROM TABLE WHERE D IN(A,B) |
| not in | 不属于运算符 | 判断一个值是否不是列表中的任意一个值 | SELECT C FROM TABLE WHERE D NOT IN(A,B) |
| like | 模糊匹配运算符 | 判断一个值是否符合模糊匹配 | SELECT C FROM TABLE WHERE A LIKE B |

3.1 空运算 IS NULL、 IS NOT NULL、 ISNULL

sql 复制代码
-- commission_pct为null的数据
SELECT last_name, salary, commission_pct FROM employees
WHERE commission_pct IS NULL;

-- 或
SELECT last_name, salary, commission_pct FROM employees
WHERE ISNULL(commission_pct);

-- commission_pct不为null的数据
SELECT last_name, salary, commission_pct FROM employees
WHERE commission_pct IS NOT NULL;

3.2 区间查询 BETWEEN

BETWEEN 条件下界1 AND 条件上界2(查询条件1和条件2范围内的数据 ,包含边界

sql 复制代码
-- 查询⼯资在6000到8000的员⼯信息
SELECT employee_id, last_name,salary FROM employees
WHERE salary BETWEEN 6000 AND 8000;
-- WHERE salary >= 6000 AND salary <= 8000;

-- 查询⼯资不在6000到8000的员⼯信息
SELECT employee_id, last_name,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;
-- WHERE salary < 6000 or salary > 8000;

3.3 包含查询 IN、 NOT IN

sql 复制代码
-- 查询部⻔为10,20,30部⻔的员⼯信息
SELECT last_name, salary, department_id FROM employees
WHERE department_id = 10 OR department_id = 20 OR department_id = 30;
--WHERE department_id IN (10,20,30);

-- 查询⼯资不是6000、7000、8000的员⼯信息
SELECT last_name, salary, department_id FROM employees
WHERE salary NOT IN (6000,7000,8000);

3.4模糊查询LIKE

sql 复制代码
-- 查询last_name中包含字符'a'的员⼯信息
SELECT last_name FROM employees
WHERE last_name LIKE '%a%';

-- 查询last_name中以字符'a'开头的员⼯信息
SELECT last_name FROM employees
WHERE last_name LIKE 'a%';

-- 查询last_name中包含字符'a'且包含字符'e'的员⼯信息
SELECT last_name FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%e%';
--WHERE last_name LIKE'%a%e%' OR last_name LIKE '%e%a%';

-- 查询last_name中第⼆个字符是'a'的员⼯信息
SELECT last_name FROM employees
WHERE last_name LIKE '_a%';

-- 查询第⼆个字符是'_'且第三个字符是'a'的员⼯信息
SELECT last_name FROM employees
WHERE last_name LIKE '_\_a%';

4. 逻辑运算符

逻辑运算符主要用来判断表达式的真假 ,在MySQL中 ,逻辑运算符的返回结果为1、0或者NULL。 MySQL中支持的逻辑运算符如下:

|----------|--------|--------|----------------------------------|
| 逻辑运算符 ||||
| 运算符 | 名称 | 作用 | 示例 |
| NOT或! | 逻辑非 | 逻辑非 | SELECT NOT A... |
| AND或&& | 逻辑与 | 逻辑与 | SELECT A AND B 或 SELECT A && B |
| OR或|| | 逻辑或 | 逻辑或 | SELECT A OR B或SELECT A||B |

4.1 AND(逻辑与)、OR(逻辑或)

逻辑与(AND或&&)运算符

当给定的所有值均为非0值 ,并且都不为NULL时 ,返回1;

当给定的⼀个值或者多个值为0时则返回0;否则返回NULL。

逻辑或(OR或||)运算符

当给定的值都不为NULL ,并且任何⼀个值为非0值时 ,则返回1 ,否则返回0;

当⼀个值为NULL ,并且另⼀个值为非0值时 ,返回1 ,否则返回NULL;

当两个值都为NULL时 ,返回NULL。

sql 复制代码
-- AND、OR
SELECT last_name,salary,department_id FROM employees
WHERE department_id = 10 or department_id = 20;
-- WHERE department_id = 10 || department_id = 20;
-- WHERE department_id = 50 AND salary > 6000;
--WHERE department_id = 50 && salary 6000;

注意:
OR可以和AND⼀起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先 对AND两边的操作数进行操作,再与OR中的操作数结合。

4.2 NOT(逻辑非)

逻辑非(NOT或!)运算符表表示当给定的值为0时返回1;
• 当给定的值为⾮0值时返回0;
• 当给定的值为NULL时,返回NULL

相关推荐
百锦再5 小时前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame
鸿乃江边鸟5 小时前
向量化和列式存储
大数据·sql·向量化
张子夜 iiii5 小时前
4步OpenCV-----扫秒身份证号
人工智能·python·opencv·计算机视觉
潮汐退涨月冷风霜6 小时前
数字图像处理(1)OpenCV C++ & Opencv Python显示图像和视频
c++·python·opencv
酷飞飞13 小时前
Python网络与多任务编程:TCP/UDP实战指南
网络·python·tcp/ip
数字化顾问14 小时前
Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测
python
学生信的大叔15 小时前
【Python自动化】Ubuntu24.04配置Selenium并测试
python·selenium·自动化
诗句藏于尽头16 小时前
Django模型与数据库表映射的两种方式
数据库·python·django
智数研析社16 小时前
9120 部 TMDb 高分电影数据集 | 7 列全维度指标 (评分 / 热度 / 剧情)+API 权威源 | 电影趋势分析 / 推荐系统 / NLP 建模用
大数据·人工智能·python·深度学习·数据分析·数据集·数据清洗
扯淡的闲人16 小时前
多语言编码Agent解决方案(5)-IntelliJ插件实现
开发语言·python