进阶2:条件查询
语法: (括号里是执行顺序)
select
查询列表(3)
from
表名(1)
where
筛选条件(2);
分类:
一、按条件表达式筛选
条件运算符:> < = != <>(不等于) >= <=
#按条件表达式筛选
-- 案例1:查询 工资>12000的员工信息
SELECT * FROM employees WHERE salary>12000;
-- 案例2:查询部门编号不等于90号的员工名和部门编号
SELECT
CONCAT (last_name, first_name) AS 员工姓名,
department_id
FROM
employees
WHERE department_id <> 90;
二、按逻辑表达式筛选
逻辑运算符:
&& || !
and or not
#二、按逻辑表达式筛选
-- 案例1:查询工资在10000~20000之间的员工名、工资以及奖金率
SELECT
CONCAT (last_name, ' ', first_name) AS 员工姓名,
salary,
commission_pct
FROM
employees
WHERE salary >= 10000
AND salary <= 20000;
-- 案例2:查询部门编号不是在90~100之间,或者工资高于15000的员工信息
SELECT* FROM employees
WHERE (department_id <90 OR department_id >100) OR salary>15000;
三、模糊查询
like(一般和通配符搭配使用)
between and
in
is null, is not null
安全等于 <=>
1. like
①一般和通配符搭配使用
通配符:
% 表示任意多个字符,包含0个字符
_ 便是任意单个字符
\ 转义字符
-- 案例一:查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
-- 案例二:查询员工名第三个字符为e,第五个字符为a的员工名和工资
SELECT last_name, salary FROM employees WHERE last_name LIKE '__e_a%';
-- 案例三:查询员工名第二个字符为_的员工名:使用转义字符'\'
SELECT last_name FROM employees WHERE last_name LIKE '_\_%';
2. between and
①使用between and 可以提高语句的简洁度
②包含临界值
③两个临界值不能颠倒
-- 案例一:查询员工编号在100到120之间的员工信息
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;
3. in
含义:判断某字段的值是否属于in列表中的某一项
特点:
①使用in提高简洁度
②in列表的值类型必须一致或兼容
-- 案例:查询工种编号在 IT_PROG, AD_VP, AD_PRES 中的员工的员工名和工种编号
SELECT last_name,job_id FROM employees
WHERE job_id IN ('IT_PROG', 'AD_VP', 'AD_PRES');
4. is null 和 is not null
-- 案例一:查询 没有 奖金率的员工名和奖金率
SELECT last_name,commission_pct FROM employees
WHERE `commission_pct` IS NULL;
-- 案例二:查询 有 奖金率的员工名和奖金率
SELECT last_name,commission_pct FROM employees
WHERE `commission_pct` IS NOT NULL;
5. 安全等于 <=>
1.可作为普通运算符的=
2.也可以用于判断是否是NULL
如:where salary is NULL/(is not NULL) -> where salary <=>NULL
-- 案例一:查询 没有 奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees
WHERE `commission_pct` <=> NULL;
-- 案例二:查询工资为12000的员工信息
SELECT * FROM employees WHERE salary <=> 12000;