二、条件查询
语法
select 查询列表
from 表名
where 筛选条件;
执行顺序:
- ①from子句
- ②where子句
- ③select子句
具体应用
1、按关系表达式筛选
关系运算符:> 、 <、 >=、 <=、 = 、 <>
补充:也可以使用!=,但不建议
举例:查询年龄大于25的员工信息
SELECT *
FROM employees
WHERE age > 25;
2、按逻辑表达式筛选
逻辑运算符:and 、 or 、 not
补充:也可以使用&& 、 || 、 ! ,但不建议
举例:查询部门编号不是 50-100之间员工姓名
SELECT name
FROM employees
WHERE department_id <50 OR department_id>100;
3、模糊查询
- like/not like
功能:一般和通配符搭配使用,对字符型数据进行部分匹配查询
常见的通配符:
_ 任意单个字符
% 任意多个字符,支持0-多个
举例:查询姓名中包含字符a的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '%a%';
- in/not in
功能:查询某字段的值是否属于指定的列表之内
in(常量值1,常量值2,常量值3,…)
not in(常量值1,常量值2,常量值3,…)
举例:查询部门编号是30/50/90的员工名、部门编号
SELECT last_name,department_id
FROM employees
WHERE department_id IN(30,50,90);
- between and/not between and
功能:判断某个字段的值是否介于xx之间
举例:查询部门编号是30-90之间的部门编号、员工姓名
SELECT department_id,last_name
FROM employees
WHERE department_id BETWEEN 30 AND 90;
- is null
功能:判断某个字段的值是否为空
举例:查询没有奖金的员工信息
SELECT *
FROM employees
WHERE commission_pct IS NULL;
三、排序查询
语法:
select 查询列表
from 表名
【where 筛选条件】
order by 排序列表
执行顺序:
- ①from子句
- ②where子句
- ③select子句
- ④order by 子句
具体应用:
- 排序列表可以是单个字段、多个字段、表达式、函数、列数、以及以上的组合
- 升序 ,通过 asc ,默认行为
降序 ,通过 desc
举例
1、按单个字段排序
将员工编号>120的员工信息进行工资的升序
SELECT *
FROM employees
ORDER BY salary ;
2、按表达式排序
对有奖金的员工,按年薪降序
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
3、按别名排序
对有奖金的员工,按年薪降序
SELECT * ,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 DESC;
注意,如果需要使用条件查询,where不能用别名,因为查询语句的执行顺序是from、where、select、order by,别名是在select处起的,此时where的别名还没定义
4、按函数的结果排序
按姓名的字数长度进行升序
SELECT last_name
FROM employees
ORDER BY LENGTH(last_name);
5、按多个字段排序
查询员工的姓名、工资、部门编号,先按工资升序,再按部门编号降序
SELECT last_name,salary,department_id
FROM employees
ORDER BY salary ASC,department_id DESC;
注意,这里的第二条件是在第一条件相同的情况下才会执行第二条件