반응형

의사 컬럼(PSEUDO 슈도컬럼)

-- 먼저 ora_user expall.dmp 파일 import하기  
ROWNUM 키워드
- 인덱스에서 저장하는 ROWID(행주소) 값이기도 함.
- 저장된 행 순서대로 자동으로 순번을 부여함.
- 단순쿼리인 경우에는 WHERE절에만 사용가능
단, 서브쿼리 사용 시 SELECT절에도 표현할 수 있다.
- 페이징처리를 하려면 서브 쿼리를 이용하여 할 수 있다.
*페이징이란 : 한번에 보여지는 수를 조정하는 것
- ORDER BY절 이용 시 꼭 서브 쿼리에서 사용할 것
- 페이징 처리시에는 꼭 별칭을 지정해주어야만 제대로 인식

--ROWNUM은 1번부터 순차적으로 실행되어야 하기에 11이상은 X
--단순쿼리 시, 작거나만 가능
SELECT * FROM CUSTOMERS WHERE
ROWNUM <=1000 AND CUST_GENDER = 'M' ;


SELECT ROWNUM, ROWID, C.* FROM CUSTOMERS C ;
SELECT ROWNUM, ROWID, C.* FROM CUSTOMERS C WHERE CUST_GENDER = 'F';
--ROWNUM 바뀜. ROWID 안 바뀜


--서브쿼리 시
SELECT ROWNUM RN, C.* FROM (SELECT * FROM CUSTOMERS WHERE CUST_GENDER = 'M') C
WHERE ROWNUM <= 500;


SELECT ROWNUM RN, C.* FROM (SELECT * FROM CUSTOMERS WHERE CUST_GENDER = 'M') C
WHERE ROWNUM >=1 AND ROWNUM <= 50 ORDER BY CUST_ID;
--ORDER BY가 추후에 실행되기에 ROWNUM 순번이 바뀐다.

SELECT ROWNUM RN, C.* FROM (SELECT * FROM CUSTOMERS WHERE CUST_GENDER = 'M') C
WHERE ROWNUM >=11 AND ROWNUM <= 50 ORDER BY CUST_ID;
--ROWNUM은 1번부터 순차적으로 실행되어야 하기에 WHERE절에 11이상은 X


SELECT ROWNUM RN, C.* FROM (SELECT * FROM CUSTOMERS WHERE CUST_GENDER = 'M' ORDER BY CUST_ID) C
WHERE ROWNUM >=1 AND ROWNUM <= 50;


--페이징 쿼리
--페이징 처리시에는 꼭 별칭을 지정해주어야만 제대로 인식될 수 있다.
SELECT * FROM (SELECT ROWNUM RN, C2.* FROM CUSTOMERS C2 WHERE CUST_GENDER = 'M')
WHERE RN BETWEEN 10 AND 13;

SELECT * FROM (SELECT ROWNUM RN, C2.* FROM CUSTOMERS C2 WHERE CUST_GENDER = 'M')
WHERE RN >= 50 AND RN <=100;
SYNTAX
ROWNUM < 값 또는
ROWNUM <=값
--단순쿼리 시, 작거나만 가능
*값은 양의 정수로 표현

 

SYSDATE, SYSTIME, NEXTVAL, CURRVAL, ROWNUM 

 

 


--서브쿼리 시
SELECT ROWNUM RN, C.* FROM (SELECT * FROM CUSTOMERS WHERE CUST_GENDER = 'M') C
WHERE ROWNUM <= 500;​

 

SELECT ROWNUM RN, C.* FROM (SELECT * FROM CUSTOMERS WHERE CUST_GENDER = 'M') C
WHERE ROWNUM >=1 AND ROWNUM <= 50 ORDER BY CUST_ID;
--ORDER BY가 추후에 실행되기에 ROWNUM 순번이 바뀐다.

SELECT ROWNUM RN, C.* FROM (SELECT * FROM CUSTOMERS WHERE CUST_GENDER = 'M') C
WHERE ROWNUM >=11 AND ROWNUM <= 50 ORDER BY CUST_ID;
--ROWNUM은 1번부터 순차적으로 실행되어야 하기에 11이상은 X
SELECT ROWNUM RN, C.* FROM (SELECT * FROM CUSTOMERS WHERE CUST_GENDER = 'M') C
WHERE ROWNUM >=1 AND ROWNUM <= 50 ORDER BY CUST_ID;
--ORDER BY가 추후에 실행되기에 ROWNUM 순번이 바뀐다.

SELECT ROWNUM RN, C.* FROM (SELECT * FROM CUSTOMERS WHERE CUST_GENDER = 'M') C
WHERE ROWNUM >=11 AND ROWNUM <= 50 ORDER BY CUST_ID;
--ROWNUM은 1번부터 순차적으로 실행되어야 하기에 11이상은 X
--페이징 쿼리
--페이징 처리시에는 꼭 별칭을 지정해주어야만 제대로 인식될 수 있다.
SELECT * FROM (SELECT ROWNUM RN, C2.* FROM CUSTOMERS C2 WHERE CUST_GENDER = 'M')
WHERE RN BETWEEN 10 AND 13;

SELECT * FROM (SELECT ROWNUM RN, C2.* FROM CUSTOMERS C2 WHERE CUST_GENDER = 'M')
WHERE RN >= 50 AND RN <=100;

 

반응형

'[ORACLE]' 카테고리의 다른 글

[ORACLE] 집합연산자 UNION, UNION ALL, INTERSECT, MINUS  (0) 2024.01.24
[ORACLE] MERGE  (0) 2024.01.23
[ORACLE] 계정 비밀번호 만료기간 해제 및 변경  (0) 2024.01.23
[ORACLE] SYNONYM  (0) 2024.01.23
extra  (0) 2024.01.23

+ Recent posts