MySQL基础——DQL语句(条件查询)
条件查询
语法:
select 查询列表
from 表名
where 筛选条件;
筛选条件分类:
一,按条件表达式筛选,条件运算符:> < = != <> >= <=
二,按逻辑表达式筛选,逻辑运算符:&& || ! and or not
作用:用于连接条件表达式
&& 和 and : 两个条件都为true,结果为true,反之为false
|| 和 or : 只要有一个条件为true,结果为true,反之为false
! 和 not : 如果连接条件本身为false,结果为true,反之为false
三,模糊查询,like between and in is null
一,按条件表达式筛选
案例1,查询工资大于12000的员工信息
SELECT
*
FROM
employees
WHERE salary > 12000;
案例2,查询部门编号不等于90号的员工名和部门编号
SELECT
last_name,
department_id
FROM
employees
WHERE department_id <> 90;
二,按逻辑表达式筛选
案例一,查询工资在10000到20000之间的员工名,工资以及奖金
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE salary >= 10000
AND salary <= 20000;
案例二,查询部门编号不是在90到110之间的,或者工资高于15000的员工信息
SELECT
*
FROM
employees
WHERE NOT (
department_id >= 90
AND department_id <= 110
)
OR salary >= 15000;
三,模糊查询
1.like
特点:一般和通配符搭配使用
通配符:%任意多个字符,包含0个字符,_单个任意字符
案例1,查询员工名中包含字符a的员工信息
SELECT
*
FROM
employees
WHERE last_name LIKE '%a%';
案例2.查询员工名中,第三个字符为n的,第五个字符为l的员工名和工资
SELECT
last_name,
salary
FROM
employees
WHERE last_name LIKE '__n_l%';
案例3,查询员工名中,第二个字符为_的员工名
SELECT
last_name
FROM
employees
WHERE last_name LIKE '_\_%';
#此处的\为转义符
也可以使用escape关键字指定转义字符
SELECT
last_name
FROM
employees
WHERE last_name LIKE '_a_%' ESCAPE 'a';
2.between and
1.使用between and 可以提高简洁度
2.包含临界值
3.两个临界值不要调换位置
案例:查询员工编号在100到120之间的员工信息
SELECT
*
FROM
employees
WHERE employee_id BETWEEN 100
AND 120;
3.in
含义:判断某字段的值是否属于in列表中的某一项
特点:
1.使用in提高了语句简洁度
2.in 列表的值类型,必须一致或兼容
3.不支持通配符
案例:查询员工的工种编号是 AD_VP AD_PRES IT_PROG中的一个员工名和工种编号
SELECT
last_name,
job_id
FROM
employees
WHERE job_id IN ('AD_VP', 'AD_PRES', 'IT_PROG');
4.is null/is not null
=或<>不能用来判断null值
案例1: 查询有奖金的员工名和奖金率
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
*
FROM
employees
WHERE salary <=> 12000;
is null 和 <=>
IS NULL:仅仅可以判断null值,可读性较高,建议使用
<=> : 既可以用来判断null值,也可以用来判断普通数值,可读性较低