對rownum和rowid的理解

2021-09-30 16:11:25 字數 1185 閱讀 1819

(1)rownum

關於rownum,可以看成是對已經查詢出來的結果加上的乙個偽列。

在利用rownum進行去資料的時候,系統首先從所給的條件處檢索,是查詢到不符合rownum條件的記錄為止,不符合條件就刪除,之後的記錄就緊跟上來,所以一般以後的記錄就都不會符合條件了。所以,對於rownum(直接利用的話)一般對於》,>=,between...and..一般查詢不到什麼結果。而對於這些情況,一般可以給rownum偽列取乙個別名即可,因為取乙個別名時,別名就相當於該錶的乙個實是在在的普通列,這個列可以象平時乙個使用。

注意:在利用rownum取中間資料時,也可以利用minus;不如就給rownum取別名,利用別名亦可。

(2)rowid

rowid 是在表中是物理存在的,表示記錄在表空間中的唯一位置id,在表中是唯一。乙個表建立以後,它的rowid就已經全部確定(有資料庫系統決定乙個表最多可以儲存多少條記錄。?)。

(3)對三大正規化的理解:

a.1nf

第一正規化是對關係型資料庫的基本要求,如果不符合第一正規化的基本要求,那麼就不是關係型資料庫。

第一正規化是指資料庫表中的每一列都是不可分的基本資料項,每一列不能有多個值,即實體中的每乙個屬性不能有多個值或者不能有重複的屬性。如果有重複的屬性要定義新的實體,新的實體和原實體構成一對多的關係。在第一正規化中每一行只能包含乙個實體的資訊。例如:乙個員工表中的義行記錄只代表乙個員工的資訊,同時,乙個員工的資訊在該資料庫表中也只能出現一次,如果乙個員工有兩個**的話,那麼可以再建立乙個新的表,**表。簡而言之,第一正規化就是沒有重複的列。

b.2nf

第二正規化是再滿足第一正規化的基礎上要求,表中的每一條記錄或者行或者實體都可以別唯一的區分。例如,再員工表中可以給員工進行標號,來唯一的區分每乙個員工。這個唯一的屬性被稱作主關鍵字或者叫做主鍵或者叫做主碼。

第二正規化要求實體的主屬性必須完全依賴主關鍵字,所謂完全依賴是指不存在僅依賴主關鍵字一部分的屬性,如果存在,那麼要建立新的實體,新實體與原實體是一對多的關係。第二正規化就是非主屬性非部分依賴於主關鍵字。

c.3nf

第三正規化必須首先滿足第二正規化,第三正規化是指資料庫表中不能包含已經在其他資料庫表中已經包含的非主屬性。例如,每個部門資訊表中都包含部門編號,部門名稱,部門簡介等,那麼再員工表中就沒有必要再包含部門名稱,部門簡介了。如果沒有部門資訊表,那麼就要建立部門資訊表,否則會有大量的資料冗餘。第三正規化就是屬性不依賴於其它非主屬性。

出處:

rowid 和 rownum 的區別

rowid 用於定位資料表中某條資料的位置,是唯一的 也不會改變 rownum 表示查詢某條記錄在整個結果集中的位置,同一條記錄查詢條件不同對應的 rownum 是不同的而 rowid 是不會變的 例如有如下一張表 user name age 張三 20 李四 22 王五 23 當執行查詢 sele...

rowid和rownum的區別

rowid和rownum都是序列,但含義完全不同。rowid是實體地址,用於定位oracle中具體資料的物理儲存位置,rownum則是sql的輸出結果排序。通俗的講 rowid是相對不變的,rownum會變化,尤其是使用order by的時候 rowid 用於定位資料表中某條資料的位置,是唯一的,也...

Oracle查詢 rownum和rowid的區別

在oracle中,有乙個很有趣的東西,那就是rownum。當你從某個表中查詢資料的時候,返回的結果集中都會帶有rownum這個字段,而且有時候也可以使用rownum進行一些條件查詢。在查詢中,我們可以注意到,類似於 select xx from table where rownum n n 1 這樣...