数据库小结

坚强是说给别人听的谎言 提交于 2019-11-28 19:50:59

/*

1、基础查询操作案例解析

2、分页查询

分页查询就是一次查询部分指定范围的数据;

分页查询的实现方式:
2.1 使用rownum伪列进行分页查询
rownum伪列是一个Oracle数据提供的虚拟列值,用于标识查询结果集中的每条记录的序号;
rownum伪列只能从1开始,不能从其他值开始;
2.2 使用集合操作(减集操作)

2.3 mysql使用limit关键字进行分页操作,但是Oracle数据不支持limit关键字;
– 分页:查询1-10条记录
select * from core_user where 1=1 limit 0,10;(后面这个10代表的容量,从1开始查10个)
– 分页:查询11-20条记录
select * from core_user where 1=1 limit 10,10;(后面这个10代表的容量,从11开始查10个)

–上面代码需要在mysql下执行。

*/
select * from employees;

select e.*,d.department_name from employees e,departments d
where e.department_id = d.department_id order by e.employee_id;

---- 查询一下部门60中的比员工编号为200的员工的工资高的员工信息
– 查询员工编号为200的员工的工资
select salary from employees where employee_id = 200;
– 部门60中的员工信息
select * from employees where department_id = 60;

— 综合查询
select * from employees where department_id = 60 and salary > (
select nvl(salary,0) from employees where employee_id = 200
);

—显示部门编号大于60的各个部门的最高工资、最低工资、平均工资及部门名,且要求平均工资不能低于5000;
select * from employees;
select * from departments;

— 各个部门的最高工资、最低工资、平均工资查询那结果中显示部门名(需要部门表和员工表进行等值连接)
select d.department_name,min(nvl(e.salary,0)) minSalary,max(nvl(e.salary,0)) as maxSalary,avg(nvl(e.salary,0)) avgSalary
from departments d,employees e where d.department_id=e.department_id group by d.department_name
—显示部门编号大于60的各个部门的最高工资、最低工资、平均工资及部门名
select d.department_name,min(nvl(e.salary,0)) minSalary,max(nvl(e.salary,0)) as maxSalary,avg(nvl(e.salary,0)) avgSalary
from departments d,employees e where d.department_id=e.department_id and e.department_id>60 group by d.department_name
—综合查询
select d.department_name,min(nvl(e.salary,0)) minSalary,max(nvl(e.salary,0)) as maxSalary,avg(nvl(e.salary,0)) avgSalary
from departments d,employees e where d.department_id=e.department_id and e.department_id>60 group by d.department_name
having avg(nvl(e.salary,0)) >=5000;

-------------------------分页查询-----------------------------------------------------

select rownum,e.* from employees e;

— 使用rownum进行分页查询第一页(1-10条记录)
select rownum rr,e.* from employees e where rownum <11;

— 使用rownum进行分页查询第二页(11-20条记录)
select rownum rr,e.* from employees e where rownum <20 and rownum >10;

— 使用子查询固化rownum伪列,然后在进行查询
select * from (
select rownum rr,e.* from employees e where rownum <=20) tt
where tt.rr > 10;

— 使用集合操作(减集)进行分页操作
select rownum rr,e.* from employees e where rownum <=20
minus
select rownum rr,e.* from employees e where rownum <=10

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!