SELECT *
FROM (SELECT * FROM EMP ORDER BY SAL DESC)
WHERE ROWNUM <= 5
ORDER BY SAL DESC;
... ORDER BY
OFFSET N { ROW | ROWS }
FETCH { FIRST | NEXT } N {ROW | ROWS} ONLY
// EMP에서 SAL 순서대로 상위 5명
SELECT EMPNO, ENAME, JOB, SAL
FROM EMP
ORDER BY SAL DESC FETCH FIRST 5 ROWS ONLY
SELECT
FROM 테이블명
START WITH 시작조건
CONNECT BY PRIOR 연결조건
// DEPT2 테이블에 대해 각 부서의 레벨을 출력
SELECT D.*, LEVEL
FROM DEPT2 D
START WITH PDEPT IS NULL
CONNECT BY PRIOR DCODE = PDEPT;



SELECT *
FROM 테이블명 또는 서브쿼리
PIVOT (VALUE 컬럼명 FOR UNSTACK 컬럼명 IN (값1, 값2, 값3));

SELECT *
FROM 테이블명 또는 서브쿼리
UNPIVOT (VALUE 컬럼명 FOR STACK 컬럼명 IN(값1,값2..));

(대상, 찾을문자열, [바꿀문자열], [검색위치], [발견횟수], [옵션])
바꿀문자열 생략 시 문자열 삭제
검색위치 생략 시 1
발견횟수 생략 시 0 (모든)
옵션
c : 대소를 구분하여 검색
i : 대소를 구분하지 않고 검색
m : 패턴을 다중라인으로 선언 가능
//ID에서 숫자 삭제
SELECT ID,
REGEXP_REPLACE(ID, '\d', ''),
REGEXP_REPLACE(ID, '[[:digit:]]', '')
FROM PROFESSOR;

//ID에서 특수기호 삭제
SELECT ID
EXGEXP_REPLACE(ID, '\w', '') AS RESULT1,
EXGEXP_REPLACE(ID, '\w|_', '') AS RESULT2,
EXGEXP_REPLACE(ID, '[[:punct:]]', '') AS RESULT3
FROM PROFESSOR;
REGEXP_SUBSTR(대상, 패턴, [검색위치]], [발견횟수], [옵션], [추출그룹])
검색위치 생략 시 1
발견횟수 생략 시 1
추출그룹은 서브패턴을 추출 시 그 중 추출할 서브패턴 번호
// 전화번호를 분리하여 지역번호 추출
SELECT TEL,
REGEXP_SUBSTR(TEL,
'(\d+)\)(\d+)-(\d+)',
1,
1,
null,
1) AS 지역번호
FROM STUDENT;
REGEXP_INSTR(원본, 찾을문자열, [시작위치], [발견횟수])
시작위치 생략 시 처음부터 확인 (기본값 1)
발견횟수 생략 시 처음 발견된 문자열 위치 리턴
// ID 값에서 두 번째 발견된 숫자의 위치
SELECT ID,
REGEXP_INSTR(ID, '\d', 1, 2)
FROM PROFESSOR;
REGEXP_LIKE(원본, 찾을문자열, [옵션])
//ID값이 숫자로 끝나는 교수 정보 출력
SELECT *
FROM PROFESSOR
WHERE REGEXP_LIKE(ID, '\d$');
REGEXP_COUNT(원본, 찾을문자열, 시작위치, [옵션])
// ID값에서의 숫자의 수
SELECT ID,
REGEXP_COUNT(ID, '\d') AS RESULT1, // 한 자리수의 숫자의미
REGEXP_COUNT(ID, '\d+') AS RESULT2 // 연속적인 숫자를 의미
FROM PROFESSOR;
홍쌤의 데이터랩
SQLD 2과목 PART2. SQL 활용 완벽 정리 (2024년 신유형 반영) 강의에 대해
공부 및 개인적으로 정리한 글 입니다.