国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql、oracle 分頁查詢

2024-07-24 13:00:02
字體:
供稿:網(wǎng)友

在web開發(fā)中,若我們從數(shù)據(jù)庫中拿到的數(shù)據(jù)過多,則我們常常會想到分頁。 分頁不但可以保持展示數(shù)據(jù)的頁面的整潔性和可控性,也同樣降低了數(shù)據(jù)庫的I/O壓力(需要時才查詢),可謂是一舉兩得。下面我們來談?wù)劊琈ySQL和Oracle數(shù)據(jù)庫如何進(jìn)行分頁。


——————Mysql分頁—————— 一般對MySQL數(shù)據(jù)庫分頁,我們都會使用到其自帶的limit函數(shù)。 Limit函數(shù)語法格式:

SELECT [DISTIN|UNIQUE](*,columname[AS alias],…)FROM tableWHERE …ORDER BY …LIMIT offset,rows

offset:指定要返回的第一行的偏移量(就是指定從第幾條數(shù)據(jù)開始查),選項可選,默認(rèn)的偏移量是0(第一條數(shù)據(jù)) rows:指定返回數(shù)據(jù)的行數(shù),必須填寫

假如我有這樣一張表: 1

當(dāng)我執(zhí)行: select t.* from chat_user t limit 5; 則會出現(xiàn)以下結(jié)果(從第一條數(shù)據(jù)開始,獲取5條記錄): 2

select t.* from chat_user t limit 3,5; 從第3條數(shù)據(jù)(不包含第3條)開始,取5條記錄 3

select t.* from chat_user t limit 5,5; 從第5條數(shù)據(jù)(不包含第5條)開始,取5條記錄 4

由上面執(zhí)行的結(jié)果來看,對于offset和rows兩個參數(shù)的定義,大家應(yīng)該也已經(jīng)了解了,但是在真正的應(yīng)用開發(fā)中,我們肯定不能這樣寫的。舉個例子吧,我要每次查找5行記錄,那么,第一頁就是1-5,第二頁就是6-10,以此類推。你總不能每次都將offset都傳進(jìn)去吧? 所以,前人總結(jié)了一條公式,以便應(yīng)用在開發(fā)中,公式為offset=(page-1)*rows,這個page就是分頁的頁數(shù),比如第一頁,代入公式那就是從offset就是0,從第一條數(shù)據(jù)開始取。第二頁,代入公式那就是rows,從第rows條數(shù)據(jù)開始取。這就剛好對應(yīng)了我上面所說的1-5,6-10這些記錄。

獲取總頁數(shù): 實(shí)現(xiàn)分頁的程序中,需要獲取分頁后的總頁數(shù),原本總頁數(shù)可以根據(jù)“總記錄數(shù)/每頁顯示的記錄數(shù)”來計算,但是,這樣難免會有余數(shù)出現(xiàn),所以為了解決出現(xiàn)余數(shù)仍能正確獲得頁數(shù),我們也得出了一個公式:總頁數(shù)=(總記錄數(shù)-1)/每頁顯示的記錄數(shù)+1。 比如我上面的截圖中總記錄數(shù)為12,我每頁要顯示5條記錄,那么帶入里面,總頁數(shù)就是3,這是正確的。


——————ORACLE分頁——————

對于oracle的分頁,并沒有像mysql那樣,有一個limit函數(shù)專門供給分頁查詢。其實(shí)說白了,oracle的分頁查詢,就是給要查詢的表中定義一個ROWNUM,然后對他進(jìn)行范圍限定,起到分頁查詢的效果。 假如我有下面這一張表: 5

那么我要查詢,行號在5-10之間的記錄,所以,我可以像這樣寫: 6

那我要查詢?nèi)掌谛∮诘扔?017.03.01并且行號在1-10之間的記錄,我可以這樣寫: 7

有 order by 條件限制的時候,你可以這樣寫 8


——————Hibernate的HQL分頁—————— hibernate對于mysql還是oracle,都封裝好了分頁的寫法,我們只需要對setFirstResult和setMaxResult進(jìn)行設(shè)定查詢,具體代碼如下:

org.hibernate.Query q = “form User”;q.setFirstResult(int offset);q.setMaxResult(int rows);

hibernate對mysql以及oracle封裝的底層代碼,有興趣的同學(xué)可以點(diǎn)擊下面博文地址進(jìn)去學(xué)習(xí),做一件事要刨根問底才能銘記于心。

博文鏈接: http://blog.csdn.net/davidmr_001/article/details/1587593

好啦!今天的博文就寫到這,學(xué)無止境,生生不息。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤城市| 连城县| 泗水县| 长宁区| 洮南市| 沁源县| 孟连| 四川省| 泸州市| 洛宁县| 凉城县| 洛宁县| 东阳市| 西峡县| 鄢陵县| 广州市| 新邵县| 集贤县| 承德县| 安西县| 团风县| 普安县| 远安县| 乌鲁木齐市| 福建省| 翁源县| 南通市| 上思县| 承德县| 泰来县| 高州市| 陆良县| 遂昌县| 英德市| 宁陵县| 巩义市| 太谷县| 灵武市| 易门县| 清河县| 叙永县|