300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > oracle数据库查询过后显示所受影响的行数

oracle数据库查询过后显示所受影响的行数

时间:2022-01-31 20:46:08

相关推荐

oracle数据库查询过后显示所受影响的行数

本文是在查询过程中显示受影响的行数,就是一共查出来几条。适用于查询的表的数据相当大的情况,上万条。

在其他操作数据所返回的受影响行数,就是例如我修改一下,增加一下,删除一下。这些对数据进行操作的。想要展示受影响行数有其他函数例如sql%rowcount

sql%rowcount用于记录修改的条数,必须放在一个更新或者删除等修改类语句后面执行,select语句用于查询的话无法使用,

当你执行多条修改语句时,按照sql%rowcount 之前执行的最后一条语句修改数为准。

除了这个以外还有其他“%”类型的函数,表达意思都不一样。感兴趣可以看看,我这里就不会再这里描述,只是提一下有这个东西!

rownum

oracle里面的rownum伪字段

它会在每一个表里面自动加上这个字段,在查询过程中不加入这个字段,查询不出来。

它的排序是根据数据增加进来的顺序排序的。

它的,返回的第一行分配的是1,第二行是2,我们只需要查询最后就可。

这个字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀,必须加入别名否则不显示。

例:

create table student (ID int, name VARCHAR2(100));

insert into sale values(11,‘张一’);

insert into sale values(12,‘张二’);

insert into sale values(13,‘张三’);

insert into sale values(11,‘张二’);

上面这张学生表,如果查询出来就是这样:

select * fromstudent

id name

11 张一

12 张二

13 张三

11 张一

加上rownum伪字段后:

select rownum,s.* fromstudent s

rownum idname

1 11张一

2 12张二

3 13张三

411张一

如果想取第一行,第二行数据:

select rownum,*from student where rownum=1;

rownum idname

1 11张一

第二行:

select rownum,*from student where rownum=2;

rownum idname

想找第二行以后的数据就需要用到子查询:

select * from(select rownum no ,* from student) where no>2;

no id name

3 13张三

4 11张一

经过上面两条语句证明,想找第一行以后的数据也可以用这个公式:

rownum<n((n>1的自然数)

解决了查询问题就来看看排序问题:

rownum和排序

Oracle中的rownum的是在读写数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。

例:

select rownum ,* from student order by id desc;

rownum id name

3 13张三

2 12 张二

1 11 张一

4 11张一

以上这种情况可以看出,rownum并不是按照id列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rownum也是顺序分配的。为了解决这个问题,必须使用子查询,我这里使用了name列排序,因为id列排序会根据优先级一直以id列排序,想要实现rownum排序得找一个优先级不高的如下:

select rownum ,*from (select * from student order by name);

rownum id name

1 11张一

2 12张二

3 13张三

411张一

这样就成了按name排序,并且用rownum标出正确序号(有有小到大)!

结束!谢谢!如果有哪里做的不对,请留言本人改正!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。