条件查询
支持的运算符:
运算符 说明
= 等于
<>或者!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
between...and 两个值之间
is null 为null(is not null 不为null)
and 并且
or 或者
in 包含(not in 不包含范围中)
not not否的意思,主要和is 或者in一起使用
like like称为模糊查询,支持%或者下划线 _
%匹配任意字符
_一个下划线只匹配一个字符
1、等号查询(=)
查询薪水为5000的员工
SELECT * FROM emp WHERE sal = 5000;
查询职位为 MANAGER 的员工的信息
SELECT * FROM emp WHERE job = ‘MANAGER’;
2、不等号的查询(<>或者!=)
查询薪水不等于5000的员工的信息
SELECT * FROM emp WHERE sal != 5000;
查询职位不是MANAGER 的员工的信息
SELECT * FROM emp WHERE job <> ‘MANAGER’;
3、区间条件的查询(<,<=,>,>= ,between…and)
薪水大于1600的员工信息
SELECT * FROM emp WHERE sal > 1600;
#薪水在1600和3000之间的员工信息
SELECT * FROM emp WHERE sal > 1600 AND sal < 3000;
SELECT * FROM emp WHERE sal BETWEEN 1600 AND 3000;
注意:between and 包含头尾信息
4、或者(or)
查询部门编号为20或者30的部门信息
SELECT * FROM dept WHERE (deptno = 20 OR deptno = 30) ;
5、包含,不包含的查询(in,not in )
查询部门编号为20或者30的信息
SELECT * FROM dept WHERE deptno IN(20,30);
查询部门编号不为20也不为30的信息
SELECT * FROM dept WHERE deptno NOT IN(20,30);
6、关于空的查询操作(is null ,is not null)
查询没有补助的员工的信息
SELECT * FROM emp WHERE comm IS NULL;
查有补助的员工的信息
SELECT * FROM emp WHERE comm IS NOT NULL;
7、模糊查询(like ,%_)
关键字 like 这个关键字的时候注意 需要和%(匹配符号)结合使用
_ 占位符视情况使用。
要求第一个字母带有s的员工的信息
SELECT * FROM emp WHERE ename LIKE ‘s%’;
要求第二个字母带有m的员工的信息
SELECT * FROM emp WHERE ename LIKE ‘_m%’;
代码常用方式:
SELECT * FROM emp WHERE ename LIKE ‘%m%’;
排序查询
order by 不算是条件,所以直接使用的时候不用where
关键字:order by [ asc 升序 | desc 降序 ]
根据员工的薪水排序(升序)
SELECT * FROM emp ORDER BY sal ASC;
根据员工的薪水排序(降序)
SELECT * FROM emp ORDER BY ename DESC;
员工入职日期降序查询
SELECT * FROM emp ORDER BY hiredate DESC;
查询职位为MANAGER 的员工信息,并且按照薪资从高到低排序
SELECT * FROM emp WHERE job = ‘MANAGER’ ORDER BY sal DESC;
聚合函数
SQL中存在一些聚合函数,这些特殊函数是不能直接在where后面当做条件使用的,一般使用方式为 放在返回值项(*) 或者放在having关键字后
max 求最大值 min 最小值 count 总数 sum 总和 avg 平均值
去重复distinct
#去重复(忽略人的情况下,查询公司一共有几个部门)
SELECT DISTINCT deptno FROM emp
分组查询 group by & having
关键字:group by having
找出不同工作类别中的最高薪资
SELECT job,MAX(sal) FROM emp GROUP BY job
找出不同工作类别中的最高薪资,显示的时候要求按照薪资从高到低显示
SELECT job,MAX(sal) AS t FROM emp GROUP BY job ORDER BY t DESC;
求每个部门的平均薪资
SELECT deptno,AVG(sal) AS t FROM emp GROUP BY deptno
求每个岗位的最高薪资 ,除MANAGER之外
SELECT job,MAX(sal) FROM emp WHERE job <> ‘MANAGER’ GROUP BY job
找出每个工作岗位的平均薪水 ,要求显示平均薪水大于2000的 (having)
当出现根据分组后得到的数据进行帅选的时候,一定要借助having关键字,并且放在分组之后。
SELECT AVG(sal) AS t FROM emp GROUP BY job HAVING t > 2000;
Limit关键字
limit :极限
MySQL中limit 的有二
第一、可以通过这个关键字查询固定几条数据(前3条)
第二、可以使用这个limit实现分页。
使用方法
limit 参数可以有一个,意思是取几条数据
limit 参数可以有两个 (limit index,count)
第一个:索引的起始位置
第二个:返回条数
案例: 员工每页5条数数据,分页
子查询
子查询:一条SQL的返回值当做另一条SQL的条件。 也叫嵌套查询。
找出薪水比公司平均薪水高的员工,要求显示员工的名字和薪水