#进阶2: 条件查询
/*
语法:
select
查询列表
from
表名
where
筛选条件;
分类:
一、按条件表达式
条件运算符: > < = <> != >= <=
二、按逻辑表达式
逻辑运算符:
&& || !
and or not 推荐第二行
三、模糊查询
like
between and
in
is null
*/
一、按条件查询筛选
# 案例1: 查询工资>12000的员工信息
SELECT * FROM `employees` WHERE `salary` > 12000;
# 案例2: 查询部门编号不等于90的员工名和部门编号;
SELECT `last_name`, `department_id` FROM `employees` WHERE `department_id` <> 90;
二、按逻辑表达式筛选
# 案例1:查询工资在10000到20000之间的员工名,工资,以及奖金
SELECT `last_name`, `salary` ,`commission_pct` FROM `employees` WHERE `salary`>= 10000 AND `salary`<=20000;
# 案例2:查询部门编号不在90到110之间,或工资高于15000的员工信息
SELECT * FROM `employees` WHERE `department_id` NOT BETWEEN 90 AND 110 OR `salary` > 15000;
SELECT * FROM `employees` WHERE `department_id`<90 OR `department_id`>110 OR `salary` > 15000;
SELECT * FROM `employees` WHERE NOT (`department_id`>90 AND `department_id`<110) OR `salary` > 15000;
三、模糊查询
LIKE
/*
特点:一般跟通配符搭配使用
通配符:
% 任意多字符,包含0个字符
- 任意单个字符
\ 转义字符
*/
BETWEEN AND
/*
特点:
1.提高语句简洁度
2.包含临界值
3.两个临界值不要调换顺序
*/
IN
/*
含义: 判断某字段的值是否属于in列表中的某一项
特点:
1、使用in提高语句简洁度
2、in列表的值类型必须一致或者兼容(可转换,例如:’123‘)
*/
IS NULL | IS NOT NULL
/*
特点:
=或<>不能用于判断null值
is null 或 is not null 可以判断 null 值
*/
# 案例1: 查询员工姓名中包含字符a的员工信息
SELECT * FROM `employees` WHERE `last_name` LIKE '%a%';
# 案例2: 查询员工命中第三个字符为n,第五个为a的员工名和工资
SELECT `last_name`, `salary` FROM `employees` WHERE `last_name` LIKE '__n_l%';
# 案例3: 查询员工命中第二个字符为_de 员工名
SELECT `last_name` FROM `employees` WHERE `last_name` LIKE '_\_%';
SELECT `last_name` FROM `employees` WHERE `last_name` LIKE '_$_%' ESCAPE '$';
# ESCAPE '$' 指定’$'为转义符,默认\为转义符
#2、between and
SELECT * FROM `employees` WHERE employee_id BETWEEN 100 AND 200;
#3、in
# 案例:查询员工的工种编号是:AD_PRES,AD_VP中的一个的员工名和工种编号
SELECT `last_name`, `job_id` FROM `employees` WHERE `job_id` IN ('AD_PRES', 'AD_VP');
#4、is null
# 案例1:查询没有奖金的员工名和奖金率
SELECT `last_name`, `commission_pct` FROM `employees` WHERE `commission_pct` IS NULL;
# 案例2:查询有奖金的员工名和奖金率
SELECT `last_name`, `commission_pct` FROM `employees` WHERE `commission_pct` IS NOT NULL;
# 安全等于: <=>
# 案例1:查询没有奖金的员工名和奖金率
SELECT `last_name`, `commission_pct` FROM `employees` WHERE `commission_pct` <=> NULL;
# 案例2:查询工资为12000的员工信息
SELECT * FROM `employees` WHERE `salary` <=> 12000;
# is null 和 <=>
IS NULL: 仅仅可以判断 null值,可读性较高,缉拿一用它
<=>:既可以判断 NULL 值又可以判断其他类型的值,可读性较低