[MySQL] 运算符(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: [MySQL] 运算符(二)

2.2 非符号类型的比较运算符

2.2.1 IS NULL \ IS NOT NULL \ ISNULL

空运算符( IS NULL \ ISNULL )判断一个值是否为NULL,如果为NULL则返回1,否则返回0。

非空运算符(IS NOT NULL)判断一个值是否不为NULL,如果不为NULL则返回1,否则返回0。

查询表中 commission_pct 为 null 的数据有哪些:

SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct IS NULL;
# 或
SELECT last_name, salary, commission_pct
FROM employees
# ISNULL 是一个判断值是否为空的函数
# 值为空返回1,反之返回0
WHERE ISNULL(commission_pct);

查询表中commission_pct不为null的数据有哪些:

SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
# 或
SELECT last_name, salary, commission_pct
FROM employees
# 先找出 commission_pct 为 null
# 然后对结果进行取反
WHERE NOT commission_pct <=> NULL;

2.2.2 LEAST() \ GREATEST()

  • 最小值运算符 LEAST()
  • 语法格式为:LEAST(值1,值2,...,值n)
  • 其中,“值n” 表示参数列表中有n个值。
  • 在有两个或多个参数的情况下,返回最小值。
  • 假如任意一个自变量为NULL,则LEAST()的返回值为NULL。
  • 最大值运算符 GREATEST()
  • 语法格式为:GREATEST(值1,值2,...,值n)
  • 其中,n表示参数列表中有n个值。
  • 当有两个或多个参数时,返回值为最大值。
  • 假如任意一个自变量为NULL,则GREATEST()的返回值为NULL。
SELECT
    LEAST(1, 2, 4),
    GREATEST(1, 2, 4),
    LEAST('g','b','t','m'),
    GREATEST('g','b','t','m'),
    LEAST('g','b','t','m', NULL),
    GREATEST('g','b','t','m', NULL)
FROM DUAL;

当参数是整数或者浮点数时,LEAST将返回其中最小的值;当参数为字符串时,返回字母表中顺序最靠前的字符;当比较值列表中有NULL时,不能判断大小,返回值为NULL。

当参数中是整数或者浮点数时,GREATEST将返回其中最大的值;当参数为字符串时,返回字母表中顺序最靠后的字符;当比较值列表中有NULL时,不能判断大小,返回值为NULL。

2.2.3 BETWEEN … AND …

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

查询工资在6000 到 8000的员工信息:

SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000;
# 或
SELECT employee_id,last_name,salary
FROM employees
WHERE salary>=6000 AND salary<=8000;
# 或
SELECT employee_id,last_name,salary
FROM employees
WHERE salary>=6000 && salary<=8000;

注意:

两个数值的位置不能对调

交换6000 和 8000之后,查询不到数据:

SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN 8000 AND 6000;

查询工资不在6000 到 8000的员工信息:

SELECT employee_id,last_name,salary
FROM employees
WHERE NOT (salary BETWEEN 6000 AND 8000);
# 或
SELECT employee_id,last_name,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;
# 或
SELECT employee_id,last_name,salary
FROM employees
WHERE salary < 6000 OR salary > 8000;
# 或
SELECT employee_id,last_name,salary
FROM employees
WHERE salary < 6000 || salary > 8000;

2.2.4 IN (SET) / NOT IN (SET)

IN运算符用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。如果给定的值为NULL,则结果为NULL。

NOT IN运算符用于判断给定的值是否不是IN列表中的一个值,如果不是IN列表中的一个值,则返回1,否则返回0。

SELECT
    'a' IN ('a', 'b', 'c'),
    1 IN (2, 3),
    1 NOT IN (2, 3),
    NULL IN (1, 2),
    NULL NOT IN (1, 2),
    1 IN (1, NULL),
    NULL IN (1, NULL)
FROM DUAL;

查询部门为10,20,30部门的员工信息:

SELECT employee_id, last_name, department_id
FROM employees
WHERE department_id IN (10, 20, 30);

查询工资不是6000,7000,8000的员工信息

SELECT employee_id, last_name, salary
FROM employees
WHERE salary NOT IN (6000, 7000, 8000);

2.2.5 LIKE

LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回0。如果给定的值或者匹配条件为NULL,则返回结果为NULL。

LIKE运算符通常使用如下通配符:

  1. “%”:匹配0个或多个字符。
  2. “_”:只能匹配一个字符。
SELECT
    NULL LIKE 'ABC',
    'ABC' LIKE NULL
FROM DUAL;

查询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%';
# 或
SELECT last_name
FROM employees
# 包含 a e 可能 a 在前也可能 e 在前
WHERE last_name LIKE '%a%e%' OR 
      last_name LIKE '%e%a%'


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
关系型数据库 MySQL Java
MYSQL运算符和分页
MYSQL运算符和分页
47 0
|
6天前
|
SQL 关系型数据库 MySQL
mysql基本查询、运算符、排序和分页
mysql基本查询、运算符、排序和分页
|
8月前
|
SQL 关系型数据库 MySQL
MySql where 查询条件与运算符
MySql where 查询条件与运算符
68 0
|
6天前
|
SQL 安全 关系型数据库
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
38 0
|
6天前
|
关系型数据库 MySQL 数据库
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
25 0
|
6天前
|
存储 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-3
MySQL基础篇(运算符、排序分页、多表查询、函数)
58 0
|
6天前
|
SQL 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-2
MySQL基础篇(运算符、排序分页、多表查询、函数)
41 0
|
6天前
|
SQL 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-1
MySQL基础篇(运算符、排序分页、多表查询、函数)
72 0
|
6天前
|
关系型数据库 MySQL 数据库
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
27 0
|
9月前
|
SQL 安全 关系型数据库
MySQL运算符大总结
MySQL运算符大总结