사용될 데이터 베이스
페이징 처리
페이징처리란 무엇이며 왜 사용하는가?
모든 데이터베이스를 한번에 보여주면 그만큼
불러오는 시간이 생겨 웹에서 렉을 유발할 수 있다
** 속도개선에 도움이 되며,
서브쿼리를 이용하여 페이지 처리하기가 쉽다!
웹툰의 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 DESC) A
"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 |