ORACLE和SYBASE数据库中实现数据查询条数限制的SQL语句实现
2015-05-18 18:50
886 查看
一、概述
对于某些需要通过数据库与大量数据打交道的软件来说,处理性能相当的重要。为了保证软件能够将所有数据处理完而不至于崩溃,分批处理的思想应运而生。分批处理的具体做法是编写SQL语句,每次返回规定条数的数据给软件处理,待这一批数据处理完之后,再接着处理下一批。
本文通过对具体的数据库表(tb_employeeinfo)的操作过程,展示了ORACLE和SYBASE数据库中分批处理SQL语句的编写方法。
二、ORACLE数据库中的处理
首先,建立tb_employeeinfo表,其定义如下:
接着,在tb_employeeinfo表中插入7条数据,如下:
如果我们想要一次性从tb_employeeinfo表中查询出5条数据,该如何处理呢?
ORACLE数据库中有一个rownum用在查询(select)语句中来限制每次执行之后返回的数据条数。例如,本次要从tb_employeeinfo表中返回5条数据,则编写SQL语句如下:
执行结果如下:
三、SYBASE数据库中的处理
首先,建立tb_employeeinfo表,其定义如下:
接着,在tb_employeeinfo表中插入7条数据,如下:
如果我们想要一次性从tb_employeeinfo表中查询出5条数据,该如何处理呢?
在SYBASE数据库中,可以利用“set rowcount X”语句来实现查询条数的限制。例如,本次要从tb_employeeinfo表中返回5条数据,则编写SQL语句如下:
执行结果如下:
注意,在设置了查询条数为5并查询成功之后,一定要有“set rowcount 0”语句,否则在下次执行的时候,就最多只能返回5条数据。
例如,我们先执行如下语句:
则此时返回的结果与上面一样。
再执行如下语句(本意是要将7条语句都查询出来):
但此时的结果仍然只返回了5条,与我们的本意不符。
因此,在SYBASE数据库中,“set rowcount X”语句一定要与“set rowcount 0”语句配对使用。
四、总结
相比本文中的数据表,在实际的软件项目中的数据表的字段要更多一些,数据量也要更大一些,在查询语句中也有可能会带有一些其它条件,但基本的SQL语句编写模式是一致的。大家可以参照来编写对应的SQL语句。
本人微信公众号:zhouzxi,请扫描以下二维码:
对于某些需要通过数据库与大量数据打交道的软件来说,处理性能相当的重要。为了保证软件能够将所有数据处理完而不至于崩溃,分批处理的思想应运而生。分批处理的具体做法是编写SQL语句,每次返回规定条数的数据给软件处理,待这一批数据处理完之后,再接着处理下一批。
本文通过对具体的数据库表(tb_employeeinfo)的操作过程,展示了ORACLE和SYBASE数据库中分批处理SQL语句的编写方法。
二、ORACLE数据库中的处理
首先,建立tb_employeeinfo表,其定义如下:
begin execute immediate 'drop table tb_employeeinfo CASCADE CONSTRAINTS'; EXCEPTION WHEN OTHERS THEN NULL; end; / create table tb_employeeinfo ( employeeno varchar2(20) not null, -- no. of employee employeename varchar2(20) not null, -- name of employee employeeage int not null -- age of employee ); create unique index idx1_tb_employeeinfo on tb_employeeinfo(employeeno); prompt 'create table tb_employeeinfo ok'; commit;
接着,在tb_employeeinfo表中插入7条数据,如下:
insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1000', 'ZhangSan', 20); insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1001', 'LiSi', 21); insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1002', 'WangWu', 21); insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1003', 'ZhouLiu', 22); insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1004', 'SunQi', 22); insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1005', 'LiuBa', 23); insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1006', 'ChenShi', 25);
如果我们想要一次性从tb_employeeinfo表中查询出5条数据,该如何处理呢?
ORACLE数据库中有一个rownum用在查询(select)语句中来限制每次执行之后返回的数据条数。例如,本次要从tb_employeeinfo表中返回5条数据,则编写SQL语句如下:
select employeeno, employeename, employeeage from tb_employeeinfo where rownum<=5;
执行结果如下:
SQL> select employeeno, employeename, employeeage from tb_employeeinfo where rownum<=5; EMPLOYEENO EMPLOYEENAME EMPLOYEEAGE A1000 ZhangSan 20 A1001 LiSi 21 A1002 WangWu 21 A1003 ZhouLiu 22 A1004 SunQi 22
三、SYBASE数据库中的处理
首先,建立tb_employeeinfo表,其定义如下:
if exists(select * from sysobjects where name='tb_employeeinfo') drop table tb_employeeinfo go create table tb_employeeinfo ( employeeno varchar(20) not null, -- no. of employee employeename varchar(20) not null, -- name of employee employeeage int not null -- age of employee ) go create unique index idx1_tb_employeeinfo on tb_employeeinfo(employeeno) go print 'create table tb_employeeinfo ok' go
接着,在tb_employeeinfo表中插入7条数据,如下:
insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1000', 'ZhangSan', 20) insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1001', 'LiSi', 21) insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1002', 'WangWu', 21) insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1003', 'ZhouLiu', 22) insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1004', 'SunQi', 22) insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1005', 'LiuBa', 23) insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1006', 'ChenShi', 25)
如果我们想要一次性从tb_employeeinfo表中查询出5条数据,该如何处理呢?
在SYBASE数据库中,可以利用“set rowcount X”语句来实现查询条数的限制。例如,本次要从tb_employeeinfo表中返回5条数据,则编写SQL语句如下:
set rowcount 5 select employeeno, employeename, employeeage from tb_employeeinfo set rowcount 0
执行结果如下:
employeeno employeename employeeage A1000 ZhangSan 20 A1001 LiSi 21 A1002 WangWu 21 A1003 ZhouLiu 22 A1004 SunQi 22
注意,在设置了查询条数为5并查询成功之后,一定要有“set rowcount 0”语句,否则在下次执行的时候,就最多只能返回5条数据。
例如,我们先执行如下语句:
set rowcount 5 select employeeno, employeename, employeeage from tb_employeeinfo
则此时返回的结果与上面一样。
再执行如下语句(本意是要将7条语句都查询出来):
select employeeno, employeename, employeeage from tb_employeeinfo
但此时的结果仍然只返回了5条,与我们的本意不符。
因此,在SYBASE数据库中,“set rowcount X”语句一定要与“set rowcount 0”语句配对使用。
四、总结
相比本文中的数据表,在实际的软件项目中的数据表的字段要更多一些,数据量也要更大一些,在查询语句中也有可能会带有一些其它条件,但基本的SQL语句编写模式是一致的。大家可以参照来编写对应的SQL语句。
本人微信公众号:zhouzxi,请扫描以下二维码:
相关文章推荐
- WMS仓储管理系统实现"收发存日报表"数据查询功能Sql语句--Oracle
- MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询
- oracle12c JSON数据 使用SQL语句实现多表左外连接 显示无效数据 分页查询
- oracle 利用over 查询数据和总条数,一条sql搞定
- SQL数据库查询实现行转列与列转行结果SQL语句(适用于SqlServer数据库,oracle需要修改case when语句)
- SQL、MySQL、Oracle、 Sqlite、Informix数据库查询指定条数数据的方法
- Oracle sql"NOT IN"语句优化,查询A表有、B表没有的数据
- Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解
- Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解
- sql语句实现从一个表的查询出某些数据插入另外一个表中
- Oracle sql"NOT IN"语句优化,查询A表有、B表没有的数据
- SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本)
- SQL语句返回多表联合查询的结果集的数据条数
- oracle sql语句查询数据中断
- oracle 不小心把表数据锁掉,sys查询被锁对象和解锁SQL语句
- Oracle, SQL Server, My SQL如何实现数据分页查询语句
- 怎么使用robomongo查询mongodb(就像用plsql,输入sql语句,查询oracle数据一样)?
- sparkSQL里 sql语句,dataframe,Thrift Server JDBC都可以实现对数据的查询,过滤等操作, 哪这3种情况分别是什么情况下使用
- SQL、MySQL、Oracle、 Sqlite、Informix数据库查询指定条数数据的方法
- SQL语句实现跨Sql server数据库操作实例 - 查询远程SQL,本地SQL数据库与远程SQL的数据传递