Oracle day2 課堂練習

2021-08-18 15:10:52 字數 2225 閱讀 2393

1.rownum

注意 : 1. ruwnum 永遠按照預設的順序排序

rownum 預設的順序不會改變,我們查詢的結果, 也不是前三個, ? ?  ? 

我們想讓emp表排序, 然後抽出前三個

select * from emp order by sal desc ;  這樣就讓emp 成了乙個倒序(sal 大的在上)的乙個表

然後我們可以通過子查詢,然後給這個表再 一行rownum 然後就能達到想要的小果果

select rownum,empno,ename,sal from (select * from emp order by sal desc ) where rownum > = 3 ; 

2. rownum 只能使用<<=不能使用 >>=

分頁查詢(oracle 的分頁比mysql麻煩,要通過子查詢)

在 oracle 中rownum 永遠從1 ,開始

limit  是 mysql 特有的 分頁查詢   oracle  通過子查詢完成分頁 

步驟: 首先將emp 降序排列

然後我們再同理, 把之後的表再進行查詢,這個時候, r成了乙個列, 就可以直接用where 進行取出了 

select * from 

(select rownum r ,empno , ename,sal from 

(select * from emp order by sal desc) 

where  rownum <=8) 

where r > 5 ; 

這樣就可以的

偽表事務提交以後, 事務一定會儲存下來嗎 ? 

不是, 下面我們演示下, 建立偽表

臨時表, 比如再order by 的時候 我們看到的就是偽表, 表的本質就是沒有改變的 ,

建立偽表

create global temporary table **** ;

特點 當事務提交會話結束的時候資料會自動刪除,可以基於事務,也可以基於會話

首先建立一張偽表 

插入資料

查詢所有的

然後提交事務

然後查詢

通過上面的實驗我們發現資料沒了, 這說明一次事務之後 , 資料是不會儲存下來的 

偽表的資料受事務, 和會話session的影響

oracle  資料庫中 提交了事務資料一定會保留下來嗎,  ? 

不一定, 這和 事務的特徵不是相對應的, 以為有臨時表的存在 

相關子查詢

如果不用相關子查詢用外連線查詢就可以, 效果如下 

用i相關子查詢、

行轉列(組函式 (多行函式))

-- 函式 wm_concat(varchar2)

設定顯示的寬高 

6 1 課堂練習

1.求正整數2和100之間的完全數。完全數 因子之和等於它本身的自然數,如6 1 2 3 include using namespace std intjudge int x int main intjudge int x 2.程式設計求2 n n為大於2的正整數 中有多少個素數。include i...

6 2 課堂練習

1 用遞迴的方法求1 2 3 n的值。include using namespace std intcalculate int n int main intcalculate int n 2 用遞迴函式輸出斐波那契數列第n項。0,1,1,2,3,5,8,13 include using namesp...

2020 6 6課堂練習反思

照著案例敲 其實修改一些地方就ok了 但思路固定了 仿照前面的 先是跟前面一樣直接設定物件屬性賦值 如 retangle.setr 3 但是後面老師的新案例是需要在鍵盤輸入值 修改過後用了 scanner sc new scanner system.in system.out.print c c s...