본문 바로가기

데이터베이스/Oracle

rownum, rowid

1. rownum


: where까지를 만족시킨 자료에 붙는 순번

  이러한 이유로 ordery by가 추가되면 rownum까지 하나의 record내의 column으로 인식되어 정렬이 일어난다.


//

select rownum, emp_id, emp_name

from temp

where emp_id>0

and lev = '수습'

and rownum < 5;


: rownum과 관련하여 주어지는 조건은 다른 조건을 만족시킨 후의 결과를 이용해 이루어진다는 것을 확인할 수

있다.


//

select rownum, emp_id, emp_name

from temp

where emp_id > 0

and lev = '수습'

and rownum < 5

order by emp_name;


: temp 테이블에서 emp_id>0이고 lev='수습'인 row들을 찾아서 이 각 row들에 rownum을 붙여주고나서, order by 절에 의해 emp_name을 기준으로 정렬된다.

: order by 후에 rownum이 붙는 것이 아니고, 조건 절을 만족시킨 행들에 rownum이 붙은 후 order by가 이루어졌다 는 것을 알 수 있다.


// 주의 할점

rownum을 조건에서 사용할 때는 항상 < 또는 <= 를 이용한다. 예외적으로 1과 비교할 때는 = 로 비교할 수 있다.

만약 rownum이 5보다 큰 행을 보기를 원한다면 in line view를 이용해 한번 더 자료를 가공해야 한다.



//

select

rownum, ceil(rownum/3), emp_id, emp_name


from temp

where emp_id>0




2. rowid

: database내의 모든 row가 가지는 유일한 식별자이다.


//왜 사용하는가??

: rowid를 통한 row access가 다른 어떤 방식보다 빠르므로, 내가 찾고자 하는 row의 rowid 를 알고 있다면 조건에 rowid를 주어주고 검색하는 방법을 최우선적으로 사용하는 것이 바람직하다.