개발자 미니민의 개발스터디

[Oracle] 오라클 - Top-N / 페이징 처리 / INVISIBLE column

by mini_min
[Oracle]
오라클 - Top-N / 페이징 처리 / INVISIBLE column

오라클 12C부터 변경된 사항들이다!

 

✔️ Top-N 이란?

: 반환되는 행수를 제한할 때 쓴다. 

: 데이터를 통해 페이징 할 때 매우 유용하다. 

마리아DB 에는 없는 내용이라고 한다.

 

📓 FETCH : 리턴할 행수 또는 백분율 지정

📓 PERCENT : 백분율을 지정한다.

 

 

-- 처음 레코드부터 3개만 출력하기

SELECT * FROM emp
FETCH FIRST 3 ROWS ONLY;

 

-- 급여 내림차순 정렬하여 처음 레코드부터 3개만 출력

SELECT * FROM emp
ORDER BY sal DESC
FETCH FIRST 3 ROWS ONLY;

 

-- 급여 내림차순, 2개의 레코드는 건너뛰고 3개만 출력

SELECT * FROM emp
ORDER BY sal DESC
OFFSET 2 ROWS FETCH FIRST 3 ROWS ONLY;
💡 OFFSET @ ROWS : 해당 숫자만큼의 레코드는 건너뛰고 제한된 행 수를 출력한다. 
OFFSET : 건너뛰는 인자 설정

 

 

 

✔️ 페이징 처리란?

11G에서 처리하는 방법과 Top-N 을 이용하는 방법이 있다.

-- 내림차순 정렬하여 21~30번째 레코드 출력

SELECT * FROM (
    SELECT ROWNUM rnum, tb.* FROM (
        SELECT num, name, subject, hitCount, reg_date
        FROM bbs
        [ WHERE 조건 ]
        ORDER BY num DESC
    ) tb WHERE ROWNUM <= 30
) WHERE rnum >=21;
💡 ROWNUM 이용

 

-- 12C 이상에서는 TOP-N 을 이용해 페이징 처리 가능

SELECT num, name, subject, hitCount, reg_date
FROM bbs
[ WHERE 조건 ]
ORDER BY num DESC
OFFSET 20 ROWS FETCH FIRST 10 ROWS ONLY;

 

 

 

✔️ INVISIBLE column 이란?

보이지 않는 컬럼을 말한다. (진짜 안보임)

❌ DESC 나 COL 로는 tel 컬럼은 보이지 않음

❌ 와일드 카드(*) 사용한 문장에서 보이지 않음

 

⭐ 제약 조건을 부여한 경우, 컬럼은 보이지 않지만 제약 조건은 유효하다!

⭐ 보이는 컬럼들이 먼저 위치하기 때문에 컬럼 순서 변경할 때 유용하다!

 

SELECT * FROM cols WHERE table_name = 'TEST';
💡 cols 로는 tel 컬럼이 보이며 hidden_column 에 yes 표시

 

-- INVISIBLE 로 변경

ALTER TABLE test MODIFY (tel INVISIBLE);

 

 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기