select * from student [where ] [having ] --二次限定 [order by] --asc升序 desc降序 默认升序
查看employee表中,员工在同一部门做相同工作且总工资大于5000,平均工资小于1500的薪水情况和人数?
select deptno,job,count(*) from employee group by deptno,job having avg(sal)<1500 and sum(sal) >5000 order by deptno;
分组查询注意事项:
如果在查询结果中的某些字段上没有使用分组函数,那么这些字段就必须出现在group by子句中。这是一个分组查询的强制性规则。
--查询每个部门的人数以及部门的总工资 --两个列都是使用了分组函数,所以group by 语句中可以省略不写 --但deptno没有使用分组函数,所以要group by语句中要出现deptno select deptno,count(empno),sum(sal) from employee group by deptno
简单地来说,连接条件就是某些值满足在某个范围之内
--salgrade表中三个属性,losal-hisal是工资范围,grade则是该范围对应的等级 select ename,salgrade from employee,salgrade where sal between losal and hisal;
多用于表之间有关联关系,如主外键关系的表
select * from employee e join department d --这里相当于inner join,inner可以省略 on e.deptno = d.deptno; --等值连接 select * frjom employee e,department d where e.deptno = d.deptno;
多用于表之间有关联关系,如主外键关系的表,不过以左边数据为标准,未匹配的以空行出现
一般outer可以省略不写
select * from employee e left join depaterment d on e.deptno = d.deptno;
与左外连接相反,以右边数据为标准,未匹配的以空行出现,好像不常用
单行子查询可以出现在以下位置:
多行子查询:
select * from employee where sal<any(select distinct sal from employee where job='salesman')
如对本文有疑问, 点击进行留言回复!!
oracle:docker镜像部署11g 创建用户名,远程连接
网友评论