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

相关推荐
神奇侠202426 分钟前
基于PaddleOCR对图片中的excel进行识别并转换成word(一)
python·word·excel·paddleocr
bigear_码农31 分钟前
python异步协程async调用过程图解
开发语言·python·线程·进程·协程
IvanCodes1 小时前
MySQL 锁机制
数据库·sql·mysql·oracle
annus mirabilis1 小时前
PyTorch 入门指南:从核心概念到基础实战
人工智能·pytorch·python
凌叁儿1 小时前
Python 的 datetime 模块使用详解
开发语言·python
谁家有个大人1 小时前
Python数据清洗笔记(上)
开发语言·笔记·python·数据分析
belldeep1 小时前
python:mido 提取 midi文件中某一音轨的音乐数据
python·track·mido
铭阳(●´∇`●)2 小时前
Python内置函数---breakpoint()
笔记·python·学习
zhanghongyi_cpp2 小时前
python基础语法测试
python
MurphyStar2 小时前
UV: Python包和项目管理器(从入门到不放弃教程)
开发语言·python·uv