MySQL第二课 查询进阶 条件查询
一 条件查询
/*
select
查询列表 3
from
表名1
where 筛选条件; 2
*/
分类
一 按条件表达式筛选
条件运算符:> < = != <> >= <=
二 按逻辑表达式筛选
逻辑运算符: && || ! and or not(用于连接条件表达式)
&&和and: 两个条件都为true,结果为true,反之为false
||或or: 只要有一个条件为true 结果为true 反之为false
!或not: 如果连接的条件本身为false,结果为true
三 模糊查询
like
一般和通配符搭配使用(通配符%表示任意多字符包括0个)
between and
可以提高简洁度,包含临界值,两个临界值有顺序
in
判断某字段的值是否属于in列表中的某一项,in列表的值类型必须一致或兼容
is null
is not null
一 按条件表达式筛选
#案例一 查询工资>12000的员工信息
SELECT * FROM employees WHERE salary > 12000 ;
#案例二 查询部门编号不等于90的员工号和部门编号
SELECT `employee_id`,`department_id` FROM employees WHERE `department_id`<>90 ;
SELECT `employee_id`,`department_id` FROM employees WHERE `department_id`!=90 ;
二 按逻辑表达式筛选
#案例一 查询工资在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` < 90 OR `department_id` > 100 OR salary > 15000 ;
SELECT * FROM employees WHERE NOT ( `department_id` >= 90 AND `department_id` <= 100 ) OR salary > 15000 ;
三 模糊查询
案例一 查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%' ;
案例2 查询员工名中第三个字符为e,第五个字符为a的员工名和工资(_表示任一内容)
SELECT * FROM employees WHERE last_name LIKE '__e_a%' ;
案例3 查询员工名中第二个字符为_的员工名(\表示转义字符 把_转义)
SELECT last_name FROM employees WHERE last_name LIKE '_\_%' ;
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';# 指定$为转义字符
案例1 查询员工编号在100到120 之间的员工信息
SELECT * FROM employees WHERE `employee_id` between 100 and 120;
案例1 查询员工的工种编号是IT_PROG AD_VP AD_PRES中的一个员工名和工种编号
SELECT last_name, job_id FROM employees WHERE `job_id`='IT_PROG' OR `job_id`=' AD_VP' OR `job_id`='AD_PRES';
SELECT last_name, job_id FROM employees WHERE `job_id` IN('IT_PROG',' AD_VP' ,'AD_PRES');
错误示范(搜不出AD开头的)
SELECT last_name, job_id FROM employees WHERE `job_id` IN('IT_PROG',' AD_%' );
案例1 查询没有奖金的员工名和奖金率
SELECT last_name, `commission_pct` FROM employees WHERE `commission_pct`is null;
错误示范
SELECT last_name, `commission_pct` FROM employees WHERE `commission_pct`= null;
SELECT last_name, `commission_pct` FROM employees WHERE salary is 12000;
安全等于<=>
案例 查询没有奖金的员工名和奖金率
SELECT last_name, `commission_pct` FROM employees WHERE `commission_pct` <=> null;
is null VS <=>
is null :仅仅可以判断null值,可读性较高
<=>:既可以判断普通的数值,又可以判断null值
例题
1选择姓名中有字母a和e的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%' and last_name LIKE '%e%' ;
2 判断下面两个语句是否一样
SELECT * FROM employees; SELECT * FROM employees WHERE `commission_pct`LIKE '%%' AND last_name LIKE '%%';
(不一样,如果字段 有NULL值)

浙公网安备 33010602011771号