Oh! JUN

ORACLE 순차적 레코드 출력 실습 본문

웹 해킹/SQL Injection

ORACLE 순차적 레코드 출력 실습

Kwon Oh! JUN 2022. 8. 14. 21:17

select username from all_users;

 


select rownum, username from all_users;

rownum 행에 일렬번호를 붙여준다.


select rownum, username from all_users where rownum < 3;

rownum < 3 이하인 행만 검색 하니까 1,2 검색된다.

 

※ 주의 

select rownum, username from all_users where rownum = 3;

쿼리를 입력하면 rownum값이 3인 행만 검색되지 않을까?

- 검색되지 않는다.

 

쿼리문의 실행순서는 

(1) from all_users

(2) where rownum <3

(3) select rownum, username

 

all_users 테이블에는 rownum이 아직 없으니까 where rownum = 3은 실행되지 않는다.

그래서 이를 서브 쿼리를 사용해서 작성할 것이다.

쿼리를 이렇게 작성하면 실행순서는 

(1) from (select rownum r, username from all_users)tb

(2) where tb.r=2

(3) select username

from (select rownum r, username from all_users)tb all_users 테이블에서 rownum, username 조회
where tb.r=2 조회된 테이블에서 rownum이 2인 값만 조회
select username  rownum이 2인 값중에서 username만조회

※ rownum r : rownum을 r로 치환

※ (select rownum r, username from all_users)tb : ()문을 tb로 치환