ORACLE學習日記 資料庫分頁查詢

2021-10-08 03:06:32 字數 1925 閱讀 2676

當我們查詢資料庫的時候最簡單的做法就是

select

*from emp;

這種查詢方式在早期學習資料庫的時候沒有什麼問題,可以讓我們以最快的速度看到乙個資料庫的完整資訊。但是隨著開發的專案越來越龐大,資料量也越來越大。當乙個表中有十萬條**的時候,每次查詢全部,既不好顯示,也會是專案效能下降。這時候我們就需要將查詢後的結果分頁顯示。

問題:如何以五條資料為一組,按組依次查詢?

既然是查詢特定的幾條資料,那我們就想到oracle提供的偽列rownum,這個偽列可以顯示每一條資料,在資料庫中的第幾行。

當我們在select子句中查詢rownum之後,oracle自動為我們的每條資料自動新增乙個行號。那麼我們是否可以利用這個偽列,作為查詢條件進行查詢呢?

可以看到在我們將rownum作為查詢條件放到where子句之中,我們確實成功將前五行資料查詢出來,那麼我們可以就用此方法完成分頁嗎?

很遺憾,我們發現並未查詢到任何資料,這是由於我們的rownum偽列是自動生成的,並不固定。所以我們需要改變一下思路。

我們發現rownum作為查詢條件只有從0開始查才是有效的,那麼我們可以嘗試先將目標位置之前的所有資料作為乙個臨時表先查詢出來,然後在這個臨時表中再去擷取相應的資料。

可以看到我們在這裡利用子查詢成功將6到10條資料查詢出來,只要改變兩個where子句中的數字,就可以查詢不同頁面中的資料。

我們現在成功實現了查詢特定行的資料,但是是使用數字寫死的方式編寫sql語句,我們可以發現,這兩個數字其實是有規律可尋的。

我們設currentpage表示當前頁,pagesize 表示每頁顯示的資料條數。

select

*from

(select rownum rm,empno,ename,job,sal,hiredate

from emp

where rownum<=

*(currentpage*pagesize)

temp

where

temp

.rm>

(currentpage-1)

*pagesize;

ORACLE資料庫分頁

create proc p show querystr nvarchar 4000 表名 檢視名 查詢語句 pagesize int 10,每頁的大小 行數 pagecurrent int 1,要顯示的頁 fdshow nvarchar 4000 要顯示的字段列表,如果查詢結果有標識字段,需要指定此...

Oracle 資料庫分頁

1.oracle 資料庫分頁 要實現資料庫的分頁,需要知道記錄的總條數totalcount,以及頁碼page,每頁的大小pagesize。1 action protected int totalcount 總條數 protected int pagesize 每頁大小 protected int p...

Oracle資料庫分頁

在oracle資料庫中進行分頁查詢需要借助rownum偽列,並且查詢語句一共分為三層 第三層限制最小記錄數 第二層限制最大記錄數 第一層做條件限制 例如 將employees表中的employee id,first name分頁顯示,每頁十條記錄。那麼第一頁 select from select f...