파게로그

ROWNUM 본문

콤퓨타 왕기초/Oracle DB

ROWNUM

파게 2021. 3. 12. 11:16

조회를 하면 결과집합을 내어놓으면서 ROWNUM이라는 (보이지 않는) 번호가 추가된다.

ROWNUM 이름 아이디 번호 계정 생성연도
1 홍길동 1056 1755
2 임꺽정 2355 1830
3 이순신 714 1815

 

이 ROWNUM은 실제로 사용 가능할까?

SELECT * FROM MEMBER WHERE ROWNUM BETWEEN 1 AND 2;   -- 실행 가능

SELECT * FROM MEMBER WHERE ROWNUM BETWEEN 1 AND 5;   -- 아무것도 조회되지 않음

 

결과집합을 만들 때(SELECT에서 WHERE문이 실행될 때) ROWNUM이 만들어지는 것

ROWNUM을 먼저 맞추어놓고, 그 후 서버에서 결과를 가져와서 데이터를 넣음.

맞지 않는 데이터는 ROWNUM은 그대로 두고 빼버림

 

SELECT * FROM (SELECT ROWNUM NUM, MEMBER.* FROM MEMBER) WHERE NUM BETWEEN 1 AND 5;

<설명>

원래는 SELECT TITLE, CONTENT, WRITER FROM NOTICE도

SELECT NOTICE.TITLE, NOTICE.CONTENT, NOTICE.WRITER FROM NOTICE이다.

묵시적 생략이었음. *도 마찬가지임. SELECT NOTICE.* FROM NOTICE;

이런 성질을 이용해서 SELECT ROWNUM, NOTICE.* FROM NOTICE; 사용 가능

 

SELECT * FROM (SELECT ROWNUMi, NOTICE.* FROM NOTICE) WHERE ROWNUMj BETWEEN 6 AND 10

j는 i를 쓰려고 했으나 바깥쪽 테이블의 ROWNUM을 일컫게 되므로 아래와 같이 별칭을 지정한다.

 

SELECT * FROM (SELECT ROWNUM NUM, NOTICE.* FROM NOTICE) WHERE NUM BETWEEN 6 AND 10

 

 

'콤퓨타 왕기초 > Oracle DB' 카테고리의 다른 글

정규식을 이용한 패턴 비교  (0) 2021.03.12
연산자(패턴비교)  (0) 2021.03.12
연산자(산술, 비교, 관계)  (0) 2021.03.12
TRANSACTION, COMMIT, ROLLBACK  (0) 2021.03.12
테이블 수정  (0) 2021.02.23
Comments