MySQL运算符

时间:2025-04-24 21:13:14

目录

一、mysql运算符

1. 算数运算符

2. 比较运算符

2.1 等号运算符(=) 

2.2 不等于运算符 !=

3.非符号类型的运算符

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

3.2 区间查询 BETWEEN

3.3 包含查询 IN、 NOT IN

3.4模糊查询LIKE

4. 逻辑运算符

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

4.2 NOT(逻辑非)


一、mysql运算符

1. 算数运算符

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

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

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

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

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

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

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

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

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

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

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

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

-- 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范围内的数据 包含边界

-- 查询⼯资在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

-- 查询部⻔为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

-- 查询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 ,逻辑运算符的返回结果为10NULL 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

-- 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