주니 개발 도서관

오라클(Oracle)

(3) SQL기초 (페이징처리)

주니홍 2022. 7. 4. 14:54

사용될 데이터 베이스

페이징 처리

페이징처리란 무엇이며 왜 사용하는가?

 

모든 데이터베이스를 한번에 보여주면 그만큼

불러오는 시간이 생겨 웹에서 렉을 유발할 수 있다

 

** 속도개선에 도움이 되며,

서브쿼리를 이용하여 페이지 처리하기가 쉽다!

웹툰의 10 화씩 1 ~ 7 페이지 목록을 따로 만듬

 

 

ROWNUM

SELECT ROWNUM,PID,NAME FROM PRODUCT WHERE ROWNUM<=3;

ROWNUM은 오라클에서만 사용가능하다

"자체적으로 PK를 만드는 개념"

 

1. FROM PRODUCT - 프로덕트 테이블에서

2. WHERE ROWNUM <=3 - 자체적으로 만든 PK가 3보다 작은것들

3. SELECT ROWNUM,PID,NAME 을 출력해줘

 

ROWNUM와 서브쿼리를 이용하여 페이징처리를 해보자

SELECT * FROM (SELECT A.*,ROWNUM AS RNUM FROM (SELECT * FROM PRODUCT ORDER BY PID DESC) A WHERE ROWNUM<=6) WHERE RNUM>=4;

 

해석

읽는 순서와 코드들의 의미를 확실히 알면 쉽다

FROM (SELECT * FROM PRODUCT ORDER BY PID DESC) A -- 1번
WHERE ROWNUM<=6 -- 2번
SELECT A.*,ROWNUM AS RNUM -- 3번
SELECT * FROM ( ) WHERE RNUM>=4; -- 4번

1. FROM 다음은 "테이블"이 와야한다

FROM (SELECT * FROM PRODUCT ORDER BY PID DESC)

PID를 내림차순으로 정렬하여 PRODUCT 출력

이 자체가 "테이블"의 역할이 되고 "테이블"이 된다

 

1 - 1.  A의 역할

FROM (SELECT * FROM PRODUCT ORDER BY PID DESCA

"A"는 자바의 객체처럼 해당 테이블을 "A"로 표현할 수 있게 담아준다칼럼에는 AS로 별칭을 쓰고, 테이블에는 FROM이후 AS없이 바로 별칭을 쓴다

 

 

2. WHERE ROWNUM <= 6

1번의 "전체테이블" 부분을 잘라내는 부분을 설정한 것

웹툰으로 생각해보자면 6화 밑부분만 이용한다 라는 것

 

 

3. SELECT A.* , ROWNUM  AS  RNUM

1 - 1번 테이블에 별칭으로 사용한 A를 뜻하고A.*    " 2번의 <=6 을 거쳐 6이하 조건으로 "만들어진 " A의 전체 "를 뜻함

 

AS RNUM 별칭을 사용한 이유는

ROWNUM은 원래 없는 칼럼이며,

AS RNUM 없이 ROWNUM만 사용하게된다면

다시 1부터 대입 될 것이기 때문에 AS를 이용하여 담아둔 것

 

 

4. SELECT * FROM ( ) WHERE RNUM >= 4

( ) 안에서 1~6 을 가지고 있는 A 테이블의 ROWNUM을 RUNM으로 별칭 만들어줌

해당 ( 테이블 1~6 )에 조건 RNUM >= 4 를 이용하여

4~6까지의 RNUM을 가진 데이터를 출력해 주는 것이다!

 

 

 

PID는 내림차순으로 설정해 놓았기때문에 8 7 6 이고,

RNUM을 기준으로 4 ~ 6 을 결과로 받을 수 있게 된다

 

이를 이용하게 된다면

페이지 1 에는 1~3

페이즈 2 에는 4~6

페이지 3 에는 7~9

이런식으로 표현할 수 있을 것이다!

 

'오라클(Oracle)' 카테고리의 다른 글

(6) 자바에서 SQL을 이용해 CRUD 표현하기  (0) 2022.07.04
(5) 오라클과 자바를 연동하는 법  (0) 2022.07.04
(4) SQL 기초 (조인 JOIN)  (0) 2022.07.04
(2) SQL기초 (HAVING, GROUP BY 절)  (0) 2022.07.04
(1) SQL 기초  (0) 2022.07.04