#进阶2:条件查询/*
语法:
select 查询列表
from 表名
where 筛选条件;
分类:
1.按条件表达式筛选
条件运算符:> < = <>(!=) >= <=
2.按逻辑表达式筛选
逻辑运算符:&& || !
and or not
3.模糊查找
like
between and
in
is null
*/#1.按条件表达式筛选#筛选工资大于12000的员工信息SELECT*FROM
employees
WHERE salary >12000;#筛选部门号不等于90的员工名和部门号SELECT`last_name`,`department_id`FROM
employees
WHERE`department_id`<>90;#2.按逻辑表达式筛选#筛选工资大于10000且小于20000的员工名,工资,奖金SELECT`last_name`,`salary`,`commission_pct`FROM
employees
WHERE salary >=10000AND salary <=20000;#筛选部门号小于90或大于110或工资大于15000的员工信息#方式一SELECT*FROM
employees
WHERE`department_id`<90OR`department_id`>110OR`salary`>15000;#方式二SELECT*FROM
employees
WHERENOT(`department_id`>=90AND`department_id`<=110)OR`salary`>15000;#模糊查找/*
like
between and
in
is null/is not null
*/#like/*
1.一般和通配符搭配使用
通配符:% 任意多个字符,包含0个,例如#abc
_ 任意单个字符
*/#案例:查找员工名中包含字符a的员工信息SELECT*FROM
employees
WHERE last_name LIKE'%a%';#查询员工名第三个字母为n,第五个字母为L的员工名和工资SELECT`last_name`,`salary`FROM
employees
WHERE`last_name`LIKE'__n_l%';#查询员工名中第二个字符为_的员工名#方式一:SELECT
last_name
FROM
employees
WHERE last_name LIKE'_\_%';#\_转义字符#方式二SELECT
last_name
FROM
employees
WHERE last_name LIKE'_a_%'ESCAPE'a';#a转义字符,可任取#between and/*
1.使用between and可提高简洁度
2.包含两个临界值
3.两个临界值不要调换顺序
*/#案例:查询员工编号在100到120之间的员工信息SELECT*FROM
employees
WHERE`department_id`BETWEEN100AND120;#in/*
含义:判断某字段的值是否属于in列表的某一项
特点:1.使用in提高语句简洁度
2.in列表的值必须一致或兼容
3.in列表的值不支持通配符
*/#案例:查询员工的工种编号是 IT_PROT,AD_VP,AD_PRES中的一个员工名和工种编号#方式一:传统方法SELECT`last_name`,`job_id`FROM
employees
WHERE job_id ='IT_PROT'OR job_id ='AD_VP'OR job_id ='AD_PRES';#方式二SELECT
last_name,
job_id
FROM
employees
WHERE
job_id IN('IT_PROT','AD_VP','AD_PRES');#is null/*
=和<>不能判断null,is null 和is not null 可以判断
*/#案例:查询没有奖金的员工和奖金率SELECT`last_name`,`commission_pct`FROM`employees`WHERE`commission_pct`ISNULL;#案例:查询有奖金的员工和奖金率SELECT`last_name`,`commission_pct`FROM`employees`WHERE`commission_pct`ISNOTNULL;#补充:安全等于(既能判断数值,也能判断NULL) <=>#案例:查询没有奖金的员工和奖金率SELECT`last_name`,`commission_pct`FROM`employees`WHERE`commission_pct`<=>NULL;#案例:查询工资为12000的员工的信息SELECT*FROM
employees
WHERE
salary <=>12000;