- 浏览: 1294863 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (471)
- Database (29)
- Java (47)
- Frameworks (9)
- JavaScript (30)
- Others (27)
- ExtJS (26)
- Linux (49)
- Windows (11)
- Web (8)
- Ubunt (9)
- Shell (21)
- MySQL (26)
- Redis (9)
- Git (6)
- Maven (29)
- Python (3)
- Nginx (10)
- Nodejs (7)
- Network (1)
- GO (2)
- Docker (36)
- MongoDB (5)
- Intellij idea (7)
- Ruby (3)
- Weblogic (3)
- CSS (15)
- VMware (3)
- Tomcat (6)
- Cache (2)
- PHP (8)
- Mac (7)
- jQuery (3)
- Spring (8)
- HTML5 (2)
- Kubernetes (8)
最新评论
-
masuweng:
Intellij idea 主题下载网址 -
mimicom:
还有一个情况, 也是连不上 2018-05-06T06:01: ...
docker-compose 部署shipyard -
lixuansong:
put()方法调用前必须先手动调用remove(),不然不会实 ...
JavaScript创建Map对象(转) -
jiao_zg22:
方便问下,去哪里下载包含Ext.ux.TabCloseMenu ...
Ext.ux.TabCloseMenu插件的使用(TabPanel右键关闭菜单) 示例 -
netwelfare:
对于基本类型的讲解,文章写的有点简单了,没有系统化,这篇文章介 ...
Java 基础类型范围
Oracle rownum使用经验总结
在使用oracle的rownum实现分页显示的时候,对rownum做了进一步的分析和研究。现归纳如下,希望能给大家带来收获。
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。
举例说明:
例如表:student(学生)表,表结构为:
ID char(6) --学号
name VARCHAR2(10) --姓名
create table student (ID char(6), name VARCHAR2(100));
insert into sale values('200001',‘张一’);
insert into sale values('200002',‘王二’);
insert into sale values('200003',‘李三’);
insert into sale values('200004',‘赵四’);
commit;
(1) rownum 对于等于某值的查询条件
如 果希望找到学生表中第一条学生的信息,可以使用rownum=1作为条件。但是想找到学生表中第二条学生的信息,使用rownum=2结果查不到数据。因 为rownum都是从1开始,但是1以上的自然数在rownum做等于判断是时认为都是false条件,所以无法查到rownum = n(n>1的自然数)。
SQL> select rownum,id,name from student where rownum=1;(可以用在限制返回记录条数的地方,保证不出错,如:隐式游标)
SQL> select rownum,id,name from student where rownum=1;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
1 200001 张一
SQL> select rownum,id,name from student where rownum =2;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
(2)rownum对于大于某值的查询条件
如果想找到从第二行记录以后的记录,当使用rownum>2是查不出记录的,原因是由于rownum是一个总是从1开始的伪列,Oracle 认为rownum> n(n>1的自然数)这种条件依旧不成立,所以查不到记录
SQL> select rownum,id,name from student where rownum >2;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
那如何才能找到第二行以后的记录呀。可以使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。
SQL>select * from(select rownum no ,id,name from student) where no>2;
NO ID NAME
---------- ------ ---------------------------------------------------
3 200003 李三
4 200004 赵四
SQL> select * from(select rownum,id,name from student)where rownum>2;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
(3)rownum对于小于某值的查询条件
如果想找到第三条记录以前的记录,当使用rownum<3是能得到两条记录的。显然rownum对于rownum<n((n>1的自然数)的条件认为是成立的,所以可以找到记录。
SQL> select rownum,id,name from student where rownum <3;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
1 200001 张一
2 200002 王二
综 上几种情况,可能有时候需要查询rownum在某区间的数据,那怎么办呀从上可以看出rownum对小于某值的查询条件是人为true的,rownum对 于大于某值的查询条件直接认为是false的,但是可以间接的让它转为认为是true的。那就必须使用子查询。例如要查询rownum在第二行到第三行之 间的数据,包括第二行和第三行数据,那么我们只能写以下语句,先让它返回小于等于三的记录行,然后在主查询中判断新的rownum的别名列大于等于二的记 录行。但是这样的操作会在大数据集中影响速度。
SQL> select * from (select rownum no,id,name from student where rownum<=3 ) where no >=2;
NO ID NAME
---------- ------ ---------------------------------------------------
2 200002 王二
3 200003 李三
(4)rownum和排序
Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。
SQL> select rownum ,id,name from student order by name;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
3 200003 李三
2 200002 王二
1 200001 张一
4 200004 赵四
可以看出,rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询
SQL> select rownum ,id,name from (select * from student order by name);
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
1 200003 李三
2 200002 王二
3 200001 张一
4 200004 赵四
这样就成了按name排序,并且用rownum标出正确序号(有小到大)
发表评论
-
Srping配置阿里数据库连接池(Druid)
2015-10-19 13:49 2123Srping配置阿里数据库连接池(Druid) POM. ... -
Oracle 常用函数
2015-08-27 16:08 1133Oracle 常用函数 获取前10个小时的时间: sel ... -
Linux安装MYSQL(手工编译)
2015-08-02 14:22 3759Linux安装MYSQL(手工编译) 创建目录 ... -
Oracle 存储过程中打印SQL影响的行数
2015-07-07 11:41 1797Oracle 存储过程中打印SQL影响的行数 db ... -
更新多个字段的UPDATE语句
2015-06-19 16:18 4064更新多个字段的UPDATE语句 ... -
解决HSQL中java.lang.NoClassDefFoundError:java/sql/Savepoint错误
2011-07-16 09:35 1622解决HSQL中 java.lang.NoClassDefFo ... -
rank() function in application
2011-05-27 13:16 1450rank() function in application ... -
Oracle Statements
2011-05-23 09:33 680Oracle Statements --crea ... -
Each score of subjects is bigger than a number
2011-05-08 18:31 1334Each score of subjects is bigge ... -
DB2 Statements
2011-04-14 16:58 1213DB2 Statements 生成1-8之间的随机整数 ... -
数据表纵转横
2010-01-26 15:18 1944数据表纵转横 方法一: --创建函数与类型 cre ... -
Oracle优化器Optimizer详解(转)
2010-01-13 11:24 2466Oracle优化器Optimizer详解(转) ... -
PreparedStatement中setString方法的异常(转载)
2010-01-08 11:00 2185PreparedStatement中setString方法的异 ... -
oracle 实现 split 函数
2010-01-05 10:46 3098oracle 实现 split 函数 CREATE O ... -
row_number()over函数的使用(转)
2009-12-16 16:05 1980row_number()over函数的使用(转) ... -
Oracle随机函数
2009-11-25 18:05 3969Oracle随机函数 --创建55到100之间随机数( ... -
Oracle取整的函数
2009-11-25 18:05 2955Oracle取整的函数 1.取整(大) sel ... -
Oracle TIMESTAMP 的使用
2009-11-13 17:15 4251Oracle TIMESTAMP 的使用 TIMEST ... -
使用预编译语句设置null值(preparedStatement.setObject)
2009-10-22 16:40 3317使用预编译语句设置null值(preparedStatemen ... -
ORACLE 常用命令
2009-10-20 15:52 1426ORACLE 常用命令 1.用命令行执行一个.sq ...
相关推荐
### Oracle经验集锦 在日常使用Oracle数据库的...以上是在Oracle数据库管理与使用过程中的一些实用技巧与经验总结,希望能对大家有所帮助。在日常工作中,还需要根据具体情况进行灵活运用,不断提升自己的技能水平。
本文档由一位经验丰富的数据库管理员(DBA)撰写,旨在总结一系列最佳实践,帮助开发人员在编写SQL语句时更加高效、准确。 #### 二、SQL语句基本编码规范 ##### 2.1 英文字母编写 - **规范要求**:SQL语句中除存储...
1. 获取前N条记录:Oracle使用`rownum`限制,而DB2使用`fetch first`子句。 2. 获取系统日期:Oracle的`sysdate`对应于DB2的`current timestamp`。 3. 空值处理:Oracle的`nvl`在DB2中用`value`函数实现。 4. 类型...
总结来说,Oracle数据库中的分页代码实现主要涉及到SQL查询的编写,以及在Java后端如何处理这些查询。理解分页的基本原理和Oracle提供的函数,结合实际编程环境,可以有效地实现高效、灵活的分页功能。对于初学者而...
通过上述知识点的总结,可以发现《Oracle数据库经典学习教程》全面地覆盖了Oracle数据库的基础知识、SQL语言、数据库对象管理、程序设计等方面的内容。无论是初学者还是有一定经验的技术人员都能从中受益匪浅。希望...
总结起来,这个教程涵盖了Web开发中重要的数据操作部分,通过学习和实践,开发者不仅可以掌握JSP与Oracle数据库的交互,还能了解到如何提升用户体验,如数据过滤、排序和分页。这对于初入IT行业的开发者来说,无疑是...
这篇总结将深入探讨Oracle SQL的学习要点。 一、SQL基础 SQL是用于创建、查询、更新和管理数据库的语言。在Oracle中,SQL的基本概念包括: 1. 数据库对象:如表、视图、索引、存储过程、函数等。 2. 数据类型:...
ORACLE SQL 优化存储过程 PROCEDURE 是一篇结合实际开发经验和理论知识的文章,旨在帮助开发者提高 SQL 开发效率和优化存储过程。文章涵盖了广泛的知识点,从基本的 SQL 语句到高级的优化技术。 基本 SQL 知识点 ...
“第3章_限制数据和对数据排序.pdf”可能涉及查询优化,如LIMIT子句的使用(在Oracle中通常使用ROWNUM伪列实现),以及更复杂的排序规则和多列排序。 “第4章_单行函数.pdf”会介绍Oracle中的各种函数,如字符串...
本指南针对初学者和有一定经验的DBA,旨在通过“commonsql.doc”文档中的经典案例,帮助读者快速掌握Oracle的基本操作和常用SQL语句。 一、Oracle数据库简介 Oracle数据库是由Oracle公司开发的关系型数据库管理...
通过以上总结,可以看出该手册涵盖了Oracle8数据库从安装、配置、优化到日常管理和应用开发的各个方面,是一份非常全面和实用的指南。对于初学者和有一定经验的DBA来说都是非常有价值的参考资料。
这些报告对于总结采购活动的经验教训、改进采购策略具有重要意义。同时,也可以帮助管理层全面了解采购状况,做出更明智的决策。 ### 附录资料 这部分提供了一些关于Oracle数据库的基础知识和技术细节,虽然不是...
在Oracle中,我们可以使用`SELECT * FROM table_name WHERE ROWNUM 来实现。这种方法基于行号,限制返回的行数,确保只获取前10条数据。 总的来说,"oracler技术总结"涵盖的内容非常实用,无论是对数据库初学者还是...
12. 取第 21—30 条记录显示:使用 ROWNUM 伪列和子查询来实现 数据库基本概念 1. pctused 和 pctfree 的含义和作用:pctused 表示表或索引的使用百分比,pctfree 表示表或索引的空闲百分比 2. table / segment / ...
在Oracle中,可以使用`ROWNUM`伪列进行分页查询。例如,要获取第n页的数据,我们可以构建如下的SQL语句: ```sql SELECT * FROM (SELECT T.*, ROWNUM RN FROM (SELECT * FROM YOUR_TABLE) T WHERE ROWNUM *(:...
- **分页处理**:MySQL可以使用`LIMIT`语句轻松实现分页,而Oracle的分页处理相对复杂,通常需要结合`ROWNUM`和子查询来实现。 - **数据类型**:例如,Oracle有`VARCHAR2`类型,而MySQL没有;MySQL有`INT`类型,...
包括UNION ALL与UNION的区别、使用CREATE DATABASE语句创建数据库的好处、密码安全规则及其在Oracle中的实现方法、Oracle Wait Interface的基本概念、如何返回查询的前N个结果以及Oracle DataGuard在标准版中的使用...
它们利用`rownum`来实现分页,减少了不必要的全表扫描。SQL语句1用于获取第一页,而SQL语句2通过`MINUS`操作获取第N页。注意,添加额外的`num`列是为了保持减法操作后结果的有序性,并确保相同记录被排除。而添加...
7. **实际项目中的适应性**:在实际项目中,可能需要根据数据库类型和具体需求调整分页SQL的写法,例如Oracle支持ROWNUM,而MySQL则可以使用LIMIT和OFFSET。 **优化技巧**: 1. **缓存**:对于不经常变动的数据,...