
语法格式:
条件查询
语法格式:
条件查询字符表
运算符 | 说明 |
---|---|
= | 等于 |
<>或!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
between … and … | 两个值之间,等同于>= and <= |
is null | 为null(is not null 不为空) |
and | 并且 |
or | 或者 |
in | 包含,相当于多个or(not in 不在这个范围中) |
not | not 可以去非,主要用在is 或 in 中 |
like | like称为模糊查询,支持%(代表任意多个字符)或下划线(_代表任意1个字符)匹配 |
数据排序(升序、降序)
语法:
分组函数
例子:找出工资总和?
select sum(sal) from emp;
例子:找出工资高于平均工资的员工?
注意:SQL语句当中有一个语法规则,分组函数不可直接使用在where子句当中,因为group by 是在where之后执行的
select ename from emp where sal > (select avg(sal) from emp)
单行处理函数
1、单行处理函数是输入一行,输出一行
2、ifnull() 空处理函数:ifnull(可能为null的数据,被当做什么处理):属于单行处理函数
group by 和 having(它们是搭档)
group by:按照某个字段或者某些字段进行分组
having:是对分组之后的数据进行再次过滤
> 1、找出每个部门的最高薪资,要求显示薪资大于2900的数据
> select max(sal),deptno from emp where sal > 2900 group by deptno;
> 2、找出每个部门的平均薪资,要求显示薪资大于2000的数据
> **注意where后面是不能使用分组函数的**
> select avg(sal),deptno from emp group by detpno having avg(sal) > 2000;
查询结果集的去重 distinct
select distinct job from emp;
distinct只能出现在所有字段的最前面,并且是所有字段联合去重
连接查询
1、什么是连接查询?
在实际开发中,大部分的情况下都不是从单表中查询数据,一般都是多张表联合查询取出最终的结果
在实际开发中,一般一个业务都会对应多张表,比如:学生和班级,起码两张表
2、连接查询的分类
(1)根据语法出现的年代来划分的话,包括:SQL92(一些老的DBA可能还在使用这种语法。)、SQL99(比较新的语法)
(2)根据表的连接方式来划分,包括:
内连接:等值连接、非等值连接、自连接
外连接:左外连接(左连接)、右外连接(右连接)
全连接(少用)
3、笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件限制时,最终的查询结果条数是两张表记录条数的乘积,可以加条件进行过滤
3张表以上连接查询
案例:找出每一个员工的部门名称以及工资等级(1)、以及上级领导(2)
(1)
select
e.ename,d.dname,s.grade
from
emp e
join
dept d
on
e.deptno = d.deptno
join
salgrade s
on
e.sal between s.losal and s.hisal;
(2)外加条件上级领导
select
e.ename '员工',d.dname,s.grade,el.ename '领导'
from
emp e
join
dept d
on
e.deptno = d.deptno
join
salgrade s
on
e.sal between s.losal and s.hisal
left join
emp el
on
e.mgr = el.empno;