MySQL入门 DQL语言之二:条件查询
#2.条件查询
/*
语法:
select
查询列表
from
表名
where
筛选条件;
赛选条件:最终肯定是true或者false
分类:
一、按条件表达式筛选
条件运算符:> < = != <> >= <=
二、按逻辑表达式筛选
逻辑运算符:
作用:用于连接条件表达式
&& || !
and or not
&&和and:两个条件都为true,结果为true,反正为false
||和or:只要有一个条件为true,结果为ture,反之false
!或not: 如连接条件的本身为false,结果为true,反之为false
三、模糊查询
关键字有
like
between and
in
is null
is not null
*/
#一、按条件表达式筛选
#案例1.查询工资>12000的员工信息
SELECT
*
FROM
employees
WHERE salary > 12000 ;
#查询部门编号不等于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 department_id => 90
AND department_id <= 110
OR salary > 15000 ;
#三、模糊查询
/*
like
特点:
①一般和通配符搭配使用
通配符:
% 表示任意多个字符,包含0个字符
_ 下划线表示任意单个字符
between and
in
is null | is not null
*/
#1.like
#案例1:查询员工名字中包含字符A的员工信息
SELECT
*
FROM
employees
WHERE last_name LIKE '%a%'
##案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT
last_name,
salary
FROM
employees
WHERE last_name LIKE '__e_a%'
#案例3:查询员工名中第二个字符为_的员工名
SELECT
last_name
FROM
employees
WHERE last_name LIKE '_$_%' ESCAPE '$';
#需要使用转义符 LIKE '_\_%'
#可以指定转义符号 ESCAPE '$';
#2.between and
/*
①使用between and 可以提高语句的简洁度
②包含临界值
③两个临界值不能颠倒顺序
*/
#案例1:查询员工编号在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('T_PROG','AD_VP','AD_PRES');
#4. is null
/*
=或<>不能用于判断null值
is null 或 is not null 可以用于判断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
last_name,
commission_pct,
salary
FROM
employees
WHERE salary <=> 12000 ;
#is null vs <=>
/*
is null:仅仅可判断null值,可读性较高,建议使用
<=> :既可以判断null值,又可以判断普通的数值,可读性较低,不建议使用
*/