日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sql server与oracle的分页,详解SQLServer和Oracle的分页查询

發布時間:2025/3/11 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql server与oracle的分页,详解SQLServer和Oracle的分页查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不管是DRP中的分頁查詢代碼的實現還是面試題中看到的關于分頁查詢的考察,都給我一個提示:分頁查詢是重要的。當數據量大的時候是必須考慮的。之前一直沒有花時間停下來好好總結這里。現在又將Oracle視頻中關于分頁查詢的內容看了一遍,發現很容易就懂了。

1.分頁算法

最開始我在網上查找資料的時候,看到很多分頁內容,感覺很多很亂。其實不是這樣。網上那些資料大同小異。問題出在了我自己這里。我沒搞明白進行分頁的前提是什么?我們都知道只要有分頁都會涉及這些變量:每頁又多少條記錄(pageSize)、當前頁(pageNow)、總記錄數(totalRecords)、總頁數(totalPages)、開始頁(beginRow)、結束頁(endRow)。網上的那些資料分頁算法有用到pageSize的,有用到beginPage還有用到endPage.其實這些變量需要分類:我將他們分為三類:

A.需要從數據庫中查詢出來的:totalRecords. " select count(*) from tableName"

B.最基本的需要用戶提供的:pageSize和pageNow.(個人覺得這是分頁算法的前提)

C.從其他變量計算得來的:totalPages、beginRow和endRow.(這里需要計算出beginRow和endRow是由于分頁查詢中需要用到,totalPages是頁面需要提供的信息)。具體的計算公式:

?

這樣這些變量的值就都可以獲得了。具體怎么使用請接著看2和3部分。

2.Oracle中的常用分頁方法

其實不管是Oracle還是SQLServer,實現分頁查詢的基礎都是子查詢。用我自己的話說就是:select中套select。

Oracle分頁方式有三種。我這里只講一種容易理解的。以員工表(emp)為例。假設有10條記錄,現在分頁要求每頁5條記錄,當前頁為2.則查詢出來的是記錄為6-10。我們先用具體的數字做,然后再換成變量。

Oracle實現第一步:select a.*,rownum rn from (select * from emp) a;其中rownum是Oracle內部分配行號。括號中的select * from emp是將emp表中的記錄全部查詢出來。然后我們再將查詢出來的結果作為視圖進一步查詢。外面的select除了查詢emp的全部以外再加一個rownum,以便后面的查詢使用。

Oracle實現第二步:select a.*,rownum rn from (select * from emp) a where rownum<=10 ;第二步加條件查詢出行號小于等于10的記錄。這里可能會有這樣的疑問為什么不直接寫rownum>=6 and rownum<=10.不就解決問題了。這里Oracle內部機制不支持這種寫法。

Oracle實現第三步:select * from (select a.*,rownum rn from (select * from emp) a where rownum<=10) where rn>=6 ;ok,這樣就可以完成查詢6-10條記錄了。

最后。我們轉換為變量。可能是在java程序中也可能是在pl/sql中。

需要轉換的又三個:“emp”的位置為具體表名、“6”的位置? 為(pageNow-1) * PageSize +1 、“10"的位置 為 pageNow * PageSize。

這種方式可以作為模板使用,修改起來很方便。所有改動只需要改動最里層就可以了。比如查詢指定列的情況:修改最里層select ename,sal from emp;根據薪水列排序:select ename,sal from emp order by sal;都只需要修改最里層。

3.SQLServer中的常用分頁方法

我們還是采用員工表的例子講SQLServer中分頁的實現

第一種TOP的使用:

SQLServer實現第一步:select top 10 * from emp order by empid ;按照員工ID升序排列,取出前10條記錄。

SQLServer實現第二步:select top 5* from (select top 10 * from emp order by empid ) a order by empid desc 。將取出的10條記錄按員工號降序排列再取出5條記錄。這里的第一次用升序排序,第二次用降序排序是巧妙之處。沒有想到top能起到這樣的效果。這里的10的位置用變量pageNow * PageSize代替而5用PageSize 代替。

第二種Top和In的使用:

select top 5 * from emp where empid in (select top 10 empid from emp order by empid) order by empid desc;??? 這里的10的位置用變量pageNow * PageSize代替而5用PageSize 代替。

其他查詢都是大同小異的,這里不再贅述。

以上就是兩種數據庫實現分頁功能的案例,希望對大家的學習有所幫助。

總結

以上是生活随笔為你收集整理的sql server与oracle的分页,详解SQLServer和Oracle的分页查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品男女视频 | 国产天堂视频 | 乳孔很大能进去的av番号 | av成人在线播放 | 亚洲网站在线播放 | 午夜av一区 | 日日碰狠狠添天天爽无码 | 一区二区免费看 | 欧美毛片基地 | 国产精品久久久久久久午夜 | 理论片琪琪午夜电影 | 超碰公开免费 | 久草国产在线观看 | 欧美成年人在线视频 | 国产黑丝一区二区 | 婷婷影院在线观看 | 91视频88av| 伊人久久久久噜噜噜亚洲熟女综合 | 成人动漫亚洲 | 91精品国产91综合久久蜜臀 | 亚洲最大综合网 | 一区视频在线播放 | 国产精品久久久久毛片大屁完整版 | 内裤摩擦1v1h | 偷操| 特黄aaaaaaaaa真人毛片 | 国产高清一区二区三区四区 | 精品亚洲国产成人av制服丝袜 | 成人综合社区 | 中文在线字幕免费观 | 免费麻豆视频 | 经典三级视频 | 亚洲天堂偷拍 | 精品熟女一区二区三区 | 国产精品丝袜视频无码一区69 | 色窝窝无码一区二区三区成人网站 | 日韩三级中文字幕 | 国产精品久久77777 | 视频这里只有精品 | 一级裸体片 | 精品人妻av在线 | 玖玖爱资源站 | 人人干人 | 高清毛片aaaaaaaaa郊外 | 在线观看网站黄 | 国产综合自拍 | 免费一级特黄3大片视频 | 各处沟厕大尺度偷拍女厕嘘嘘 | 91精选 | 国产在线观看免费视频软件 | 国产精品夜夜 | 色图综合网 | 婷婷国产 | 国产一区二区在线观看免费 | 亚洲视频免费 | 污污视频在线观看网站 | 在线爽| 1000部国产精品成人观看 | 日韩精品在线视频观看 | 亚洲性夜 | xxxx日本少妇 | 91视频综合 | www.国产黄色 | 日韩免费精品视频 | 亚洲AV成人无码网站天堂久久 | 日本理论片午伦夜理片在线观看 | 嫩模一区 | 好男人www在线视频 我们的2018在线观看免费高清 | 亚洲国产黄 | 欲色网站| 国产一在线 | 中文久久乱码一区二区 | 日韩涩 | 爆操白虎 | 国产乱码精品一区二区三区精东 | 国产精品v日韩精品v在线观看 | 91伊人久久 | 青青草55| 久久在线观看 | 国模精品一区 | 日日撸夜夜操 | 激情 亚洲| 日韩国产在线播放 | 黑丝一区二区三区 | 三级a毛片 | 男人操女人网站 | 国产98在线 | 日本一区二区高清视频 | 一区二区三区视频 | 日韩在线免费看 | 国产免费av观看 | 麻豆免费视频网站 | 少妇精品久久久久久久久久 | 一本大道伊人av久久综合 | 国产精品视频久久久久久 | 在线观看的av网址 | 女人被灌满精子 | 好看的av网址| 国产中年熟女高潮大集合 |