mysql和oracle分页注意点
这里首先说下oracle分页不像mysql分页那么简单直接limit 就可以了.
mysql:sql ="select * from talbe limit 0,10";
第一个数表示下标,就是从第几条数据开始,
第二个数表示每页显示多少条数据,可以说是当你确定每页显示多少行时候,它就是一个固定的数。
这里需要注意的是,mysql的访问下标是从0开始的。这个一定要记住。
下面说说oracle,oracle的分页就比较麻烦些了.
oracle是没有id自增长的,我们要首先要对我们自己在表自建的id创建个序列
select * from table(Book) order by B_id //第一步什么呢?
我oracle表中的B_id先
按照arder by 排序下,就是在oracle中是没有id自增长的,中间容易出现断层
第二步
我们把上面的第一个的语句作为一个条件用括弧括起来,那么第一个sql语句相当于一个视图,我们为了方便,在给他一个别名。m就是这个视图的别名,
这里我们知道oracle里面排序时通过“rownum”的关键字,我们也给他起个别名叫rn,就是后面伪列的名字;
这样我们执行下面的语句,会产生一个伪列,rn,当然一个伪列和B_id是不一样的
B_id会出现裂缝,断层,但是这个伪列是不会的。即便B_id中间断层,rn这个伪列永远
是按照1,2,3,...10....排序的,而且是自增长的。
其实在oracle里面进行真分页,oracle就是按照伪列实现的。
select m.*,ROWNUM rn from (select * from table(Book) order by B_id ) m
第三步
我们要做的还是和第二步的差不多,我们还是要把刚才的语句作为一个条件,用括弧
括起来,后面加where条件 between and 伪列从那到那,这个主要对rn伪列的操作。
这里和mysql区别是有点大的。
select * from (select m.*,ROWNUM rn from (select * from table(Book) order by B_id ) m)rn where between 1 and 10;
当然写法很多不只一种
select * from (select m.*,ROWNUM rn from (select * from table(Book) order by B_id ) m where ROWNUM <=10)where rn>=1 ;
后面的算法要高些。
个人笔记不断改善....谢谢
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
PL/SQL 的异常(预定义异常)
2009-08-13 20:24
异常名称 & ......
开放性:
SQL Server
只能在windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据量 ......
aspx页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="customin.aspx.cs" Inherits="kf_customin" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" ......
1、选取最适用的字段属性
MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使 ......