-
语法:
select
查询列表
from
表名
where
筛选条件 -
分类:
1.按条件表达式筛选:
条件运算符:> < = <>
2.按逻辑表达式筛选:
逻辑运算符: and or not
3.模糊查询: like between and in is null
like:一般和通配符一起使用,
通配符:%任意多个字符(包含0个字符) _ 任意单个字符
一.按条件表达式筛选
#案例1:查询工资大于12000的员工信息
SELECT
*
FROM
employees
WHERE salary > 12000 ;
#案例2:查询部门编号不等于90号的员工的名和部门编号
SELECT
first_name,
`department_id`
FROM
employees
WHERE department_id <> 90 ;
二.按逻辑表达式筛选
#案例1:查询工资1000~2000之间的员工名和奖金
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
salary>=1000 AND salary<=20000;
#案例2:部门编号不是90~110之间,或者工资高于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;
三.模糊查询
1. like:
#案例1:查询员工名中包含字符“a"的员工信息
SELECT
*
FROM
employees
WHERE
last_name LIKE '%a%';
#案例2:查询员工名中第三个字符为e,第五个字符为a的员工信息
SELECT
*
FROM
employees
WHERE
last_name LIKE '__n_l%';
案例3:查询员工名中第二个字符为_的员工名
- 我们知道,在sql语言中 表示任意单个字符,但是现在我们要查询员工名中包含“"的员工,所以要用到转义
转义有两种方式:使用“\”或者使用“~”
#方式一:使用\
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_\_%';
#方式二:使用“~”
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_~_%' ESCAPE '~';
2. between and
#案例:查询员工编号在100到120之间的员工信息
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100 AND 120;
3. in
#案例:查询员工的工种编号是IT_PROG AD_VP AD_PRES中任意一个的员工名和工种编号
SELECT
job_id AS '工种编号', last_name AS '名'
FROM
employees
WHERE
job_id IN ('IT_PROG','AD_VP','AD_PRES');
4. is null ,is not null
#案例:查询有奖金的员工信息,即commission_pct不为null的员工
SELECT
*
FROM
employees
WHERE
commission_pct IS NOT NULL;
5. 安全等于 <=>
普通“=”不能判断null,需要用“is null” 或者“is not null”来判断;但是安全等于<=>,可以直接用来判断null
#案例1:查询没有奖金的员工信息
SELECT
last_name,commission_pct
FROM
employees
WHERE
commission_pct <=> NULL;
#案例2:查询工资等于12000的员工
SELECT
last_name,salary
FROM
employees
WHERE
salary <=> 12000;
四.条件查询例题:
#查询没有奖金,工资小于18000的salary、last_name
SELECT
last_name,salary
FROM
employees
WHERE
commission_pct IS NULL AND salary<18000;
#查询job_id不为‘IT’ 或者工资为12000的员工信息
SELECT
*
FROM
employees
WHERE
job_id <> 'IT' OR salary=12000;