设为首页 加入收藏

TOP

ORACLE和SYBASE数据库中实现数据查询条数限制的SQL语句实现(一)
2015-11-21 02:05:40 来源: 作者: 【 】 浏览:2
Tags:ORACLE SYBASE 数据库 实现 数据查询 限制 SQL 语句

一、概述
对于某些需要通过数据库与大量数据打交道的软件来说,处理性能相当的重要。为了保证软件能够将所有数据处理完而不至于崩溃,分批处理的思想应运而生。分批处理的具体做法是编写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并查询成

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇误删oracle数据文件的恢复 下一篇oracle添加notnull约束

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: