[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);
'SQL쿼리' 카테고리의 다른 글
[Oracle] 오라클 - 계정관리 (서버 연결, 패스워드 변경, 실행) (0) | 2022.08.18 |
---|---|
[Oracle] 오라클 - 패키지(Package) (0) | 2022.08.17 |
[Oracle] 오라클 - PL/SQL (트리거 Trigger) (0) | 2022.08.17 |
[Oracle] 오라클 - PL/SQL (예외처리) (0) | 2022.08.17 |
[Oracle] 오라클 - PL/SQL 커서(Cursor) / 동적쿼리 (0) | 2022.08.17 |
블로그의 정보
개발자 미니민의 개발로그
mini_min