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를 주어주고 검색하는 방법을 최우선적으로 사용하는 것이 바람직하다.
'데이터베이스 > Oracle' 카테고리의 다른 글
Oracle Stored Procedure (0) | 2016.05.12 |
---|---|
게시판 페이징 처리 (oracle DB) (6) | 2016.03.04 |
IN과 NOT IN의 함정 (4) | 2016.03.04 |
외부 sql파일 실행시키기 (0) | 2016.03.02 |
다른 DB 서버의 테이블에 있는 데이터를 우리 DB 서버로 가져오기 (0) | 2016.03.02 |