MySQL笔记--MySQL条件查询(5)

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

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

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Al_tair

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值