Oracle基础知识

database

1、Oracle分页查询

现有表employee_tbl,要求按年龄降序,分页查询数据,每页3条数据。

ID  NAME         DATE                             SIGNIN   AGE

1    小明            2016-04-22 15:25:33    1            23
2    小王            2016-04-20 15:25:47    3            22
3    小丽            2016-04-19 15:26:02    2            27
4    小王            2016-04-07 15:26:14    4            29
5    小明            2016-04-11 15:26:40    4            19
6    小明            2016-04-04 15:26:54    2            17
7    小朱            2020-07-19 19:24:51    3            21
8    小智            2020-07-19 19:25:08    2            21

第一步:按年龄降序查询数据:

SELECT * FROM "employee_tbl" e_tbl order by e_tbl."age" desc

第二步:使用rownum(伪列),将rownum标记为rn,查询所有数据:

SELECT ROWNUM rn,s.* from (SELECT * FROM "employee_tbl" e_tbl order by e_tbl."age" desc)s;

第三步:按rn进行筛选,得到分页数据,以查第二页为例:

SELECT * from (select ROWNUM rn,s.* from (SELECT * FROM "employee_tbl" e_tbl order by e_tbl."age" desc)s) where rn>=4 and rn<=6;

注意这里不能直接对rownum进行大于号比较,否则会一直查不到数据,以下的写法就是错误的(查第一个rownum对应的数据时发现不满足条件,然后后面的所有数据又分别作为第一个rownum,依然不满足条件,导致最后一条数据也没有):

select ROWNUM,s.* from (SELECT * FROM "employee_tbl" e_tbl order by e_tbl."age" asc)s where ROWNUM<=8 and ROWNUM>=5; 

总体思想是从内向外写SQL,以本例来说明,内层先进行排序(如果内层先编号rownum,再排序,则rownum是错误的),第二层进行rownum编号,第三层根据rownum条件进行筛选。

 

分页查询公式:

分页查询,假设每一页有pageSize条数据,则第N页的起始行号是:pageSize*(N-1)+1,结束行号是:pageSize*N。(行号从1开始)

 

2、Oracle函数

主要包括单行函数、聚合函数两大类,从操作对象来看,主要分为数值、字符串、日期时间等。

https://blog.csdn.net/weixin_39805338/article/details/81002980

以上是 Oracle基础知识 的全部内容, 来源链接: utcz.com/z/534706.html

回到顶部