1、rowid(行標示符)概述
rowid是一個用來唯一標記表中行的僞列。它是物理表中行數據的內部地址(唯一),包含兩個地址,其一爲指向數據表中包含該行的塊所存放數據文件的地址,另一個是可以直接定位到數據行自身的這一行在數據塊中的地址
orale 刪除相同的數據
delete from TABLE_NAME a
where rowid != (select max(rowid)
from TABLE_NAME t
where a.id = t.id)
2、Rownum(行號)
根據排序插入一列序號
SELECT
t.id,
row_number() over(order by t.aa desc) order_num
FROM table1 t
Rownum 不同分頁寫法的比較
–>> 方式一 在查詢的最外層控制分頁的最小值和最大值
SELECT * FROM
(
SELECT B.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) B
)
WHERE RN BETWEEN 1AND 20
—>>方式 二 絕大多數的情況下,第2個查詢的效率比第1個高得多。
SELECT * FROM
(
SELECT B.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) B
WHERE ROWNUM <= 20
)
WHERE RN >= 1
3、NAL
SELECT NVL(T.ID,0) AS ID FROM TABLE_NAME T
nvl(字段名,0),就是當你選出來的時候,這個字段雖然爲空,但是顯示的是0,當然這個0也可以換成其他東西,如:1,2,3……
4、Merge into
-全部男生記錄
create table fzq1 as select * from fzq where sex=1;
--全部女生記錄
create table fzq2 as select * from fzq where sex=0;
/*涉及到兩個表關聯的例子*/
--更新表fzq1使得id相同的記錄中chengji字段+1,並且更新name字段。
--如果id不相同,則插入到表fzq1中.
--將fzq1表中男生記錄的成績+1,女生插入到表fzq1中
merge into fzq1 aa --fzq1表是需要更新的表
using fzq bb -- 關聯表
on (aa.id=bb.id) --關聯條件
when matched then --匹配關聯條件,作更新處理
update set
aa.chengji=bb.chengji+1,
aa.name=bb.name --此處只是說明可以同時更新多個字段。
when not matched then --不匹配關聯條件,作插入處理。如果只是作更新,下面的語句可以省略。
insert values( bb.id, bb.name, bb.sex,bb.kecheng,bb.chengji);