p31 分页SQL
1. 分页
要实现分页,必须知道 某一页的数据,从哪里开始,到哪里结束
页面大小:每页显示的数据量
MYSQL实现分页的sql:
oracle分页:
如果用 selecr* from student where sno>=(n-1)*10+1 and sno<=n*10,可能存在漏洞。因为这种方式的前提是,ID值必须是连续的,否则无法满足每页显示值
select rownum,t.* from student t where sno >= (n-1)*10+1 and sno <=n*10 order by sno;这种方法问题:
根据sno排序,则rownum会混乱; rownum不能查询大于的数据
解决方案:先只排序,再只查询rownum
select rownum, t.* from
(select rownum,t.* from student s order by sno asc)t;
sqlServer与oracle的sql区别:
(1) rownum, row_num()
(2) oracle需要排序(为了排序,单独写了一个子查询),但是在sqlserver里,可以省略该排序的子查询。因为sqlserver中可以通过over直接排序