본문 바로가기
Backend/Oracle DB

15. 모조칼럼 (rownum, rowid)

by 개발개발빈이 2022. 5. 20.

tb_student

○ 모조칼럼 (의사칼럼, pseudo column)

    - 모조칼럼, 의사칼럼 : 칼럼은 아니지만 실제 칼럼처럼 사용할 수 있는 칼럼

    - 오라클 DBMS 전용
    - rownum : 행 번호

    - rowid : 행의 주소값

--행의 주소값
select uname, rowid from tb_student;

-- 줄번호
select hakno, uname, rownum from tb_student;

-- 줄번호에 별칭 부여하기
select hakno, uname, rownum as rnum from tb_student;

-- 줄번호가 먼저 부여되고 정렬된다
select hakno, uname, rownum as rnum from tb_student order by uname;

-- 줄번호 1~3사이 조회
select hakno, uname, rownum from tb_student
where rownum>=1 and rownum<=3; 

-- 줄번호 4~6사이 조회 (조회 안됨)
select hakno, uname, rownum from tb_student
where rownum>=4 and rownum<=6;

rownum 1~n까지는 조회가 되지만, n~m까지는 조회되지 않음

 

○ rownum을 활용한 페이징

    - rownum : 웹페이지 게시판 페이징이나 댓글더보기 등의 기능에서 활용

    - 모조칼럼이므로 조건절에 직접 사용하지 않고, 실제 칼럼으로 인식 후 사용할 것을 추천
    - 셀프조인 후에 줄번호를 추가하고 조건절에 활용

    - 위에서 줄번호가 부여되고 정렬이 되는 것이나, 중간부터 조회가 안되는 문제를 해결할 수 있음

 

        Q) 줄번호(rownum)을 이용해서 줄번호 4~6조회

--1) 이름 순으로 조회
--rownum이 먼저 붙고, 정렬되서 번호가 섞여있음
select uname, hakno, address, rownum from tb_student order by uname; 

--2) 1)의 결과를 셀프조인하고, 줄번호를 추가
--정렬을 먼저해주고, 줄번호를 추가해서 번호가 원하는 대로 나옴
select uname, hakno, address, rownum    
from(
    select uname, hakno, address from tb_student order by uname
    );

--3) 2)의 결과에 별칭(AA)을 추가하고, 줄번호 4~6행 조회
--
select uname, hakno, address, rnum
from(
    select uname, hakno, address, rownum as rnum --rownum에 별칭을 안주면 오류    
    from(
         select uname, hakno, address from tb_student order by uname
         )
    )AA --AA 별칭 생략가능                                                                 
where rnum>=4 and rnum<=6;

셀프조인 후 rownum부여시 4~6번까지도 조회가능

 

댓글