MySQL笔记--MySQL条件查询

Posted Al_tair

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL笔记--MySQL条件查询相关的知识,希望对你有一定的参考价值。

我们已经学习完基础查询语句,接下来我们涉足条件语句的查询,跟上我的步伐!

DQL语言的学习
基础查询
条件查询
排序查询
常见函数
分组函数
分组查询
连接查询
子查询
分页查询
联合查询

进阶二:条件查询

语法
     SELECT 查询列表 FROM 表名 WHERE 筛选条件;
分类
1.按条件表达式筛选:>< = <> >= <=
2.按逻辑表达式筛选:& | && || and or not
3.模糊查询: like, between and ,in ,is null

按条件表达式筛选

案例1:查询工资>12000的员工信息

查询代码

SELECT 
		*
FROM 
		employees 
WHERE 
		salary>12000

查询结果
在这里插入图片描述

案例2:查询部门编号不等于90的员工名和部门编号

查询代码

SELECT 
		first_name,last_name,department_id
FROM 
		employees 
WHERE 
		department_id <> 90

查询结果
在这里插入图片描述

按逻辑表达式筛选

本质上就是连接条件表达式
&&和and: 两个条件都为true,结果为true,反之为false
|| 和 or: 只要其中一个条件为true,结果为true,反之为false
! 和 not 如果连接的条件本身为false,结果为true,反之为false

案例1:查询工资在10000在20000之间的员工名,工资以及奖金

查询代码

SELECT
			first_name,last_name,salary,commission_pct
FROM
			employees
WHERE
			salary>10000 AND salary<20000

查询结果
在这里插入图片描述

案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息

查询代码

SELECT
			*
FROM
			employees
WHERE
			salary>15000 OR !(department_id>90 AND department_id<110);

查询结果
在这里插入图片描述

模糊查询 like, between and ,in ,is null

模糊,顾名思义就是不清晰,这里指的是给出的条件是不清晰的比如包含字样

特点
一般和通配符搭配使用
% 任意多个字符,包含0个字符
_ 任意单个字符

like关键字

案例1:查询员工名中包含字符a的员工信息

查询代码

SELECT
			*
FROM
			employees
WHERE
			last_name LIKE '%a%';

查询结果
在这里插入图片描述

案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资

查询代码

SELECT
			last_name,salary
FROM
			employees
WHERE
			last_name LIKE '__e_a%';

查询结果 :无此条件数据

查询员工名中第二个字符为_的员工名

注意:表示通配符的方法,通配符前面加上\\为默认,也可以自己自定义转义字符,示例如下ESCAPE '*'
特别注意需要加上单引号

查询代码

SELECT
			last_name
FROM
			employees
WHERE
			last_name LIKE '_\\_%';
SELECT
			last_name
FROM
			employees
WHERE
			last_name LIKE '_*_%' ESCAPE '*';

查询结果
在这里插入图片描述

between and 关键字

注意点:
1.使用 between and 可以提高语句的简洁度
2.包含临界值

案例1:查询员工编号在100到120之间的员工信息

查询代码

SELECT
			*
FROM
			employees
WHERE
			employee_id BETWEEN 100 AND 120;

查询结果
在这里插入图片描述

in 关键字

含义: 判断某字段的值是否属于in列表中的某一项
特点:
1.使用in提高语句简洁度
2.in列表的值类型必须一致或兼容 ‘123’ 123
3.不能使用通配符

案例1:查询员工的工种编号是IT_PROG,AD_VP中一个员工名和工种编号

查询代码

SELECT
			last_name,job_id
FROM
			employees
WHERE
			job_id IN('IT_PROG','AD_VP');
SELECT
			last_name,job_id
FROM
			employees
WHERE
			job_id ='IT_PROG' OR job_id ='AD_VP';

查询结果
在这里插入图片描述

is null 关键字

注意:= 或 <> 不能用于判断null值
is null 或者 is not null 可以判断null值

案例1:查询没有奖金的员工和奖金率

查询代码

SELECT
			last_name,commission_pct
FROM
			employees
WHERE
			commission_pct IS NULL;

查询结果
在这里插入图片描述

补充 安全等于 <=>

注意: 等于的情况下,可以用来判断null 或者数据的等价关系=
但是

案例1:查询没有奖金的员工名和奖金率

查询代码

SELECT
			last_name,commission_pct
FROM
			employees
WHERE
			commission_pct <=> NULL;

案例2:查询工资为12000的员工信息

查询代码

SELECT
			*
FROM
			employees
WHERE
			salary <=> 12000;

查询结果

在这里插入图片描述

测试

1.查询员工号为176的员工的姓名和部门号和年薪

查询代码

SELECT
			first_name,last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
			employees

查询结果
在这里插入图片描述

2.查询没有奖金,且工资小于18000的salary,last_name

查询代码

SELECT 
			last_name,salary
FROM
			employees
WHERE
			commission_pct IS NULL AND salary < 18000

查询结果
在这里插入图片描述

3.查询employees表中,job_id不为‘IT’ 或者工资为12000的员工信息

查询代码

SELECT
			*
FROM
			employees
WHERE
			job_id <> 'IT' OR salary = 12000;

查询结果
在这里插入图片描述

经典面试题

试问:select *from employees; 和 select *from employees where commission_pct like ‘%%’ and last_name like ‘%%’; 结果是否一样?请说明理由
不一样,如果判断的字段有null 的值

以上是关于MySQL笔记--MySQL条件查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL学习笔记 ----Mysql数据库的条件查询

MySQL学习笔记

MySQL笔记--- 部分 DQL 语句;条件查询;排序;分组函数;单行处理函数;group by ,having ;

MySQL基础笔记之单表查询

MySQL 连接查询 学习笔记

史上最全MYSQL总结MySQL超详细笔记