10. DECODE와 CASE문
1) DECODE
- if 문 구현하는 DECODE문 : 특정 조건이 참이면 A, 거짓이면 B로 응답 가능
DECODE(비교값, 기준값1, '비교값=기준값1 일 때 반환값',[기준값2,비교값=기준값2 일 때 반환값,] '모두 다르면 기본 반환값');
DECODE(SALARY, 1000, '연봉1000만원', '연봉 1000만원 아님');
2) CASE문
CASE [expression] WHEN condition_1 THEN result_1 WHEN condition_2 THEN result_2 ... WHEN condition_3 THEN result_3 ELSE result END; |
- IF~THEN ~ELSE~END같은 조건문 - WHEN구 : 조건, THEN : 해당 조건이 참이면 실행되고 거짓이면 ELSE구가 실행 - 중첩 사용 가능 SELECT ENAME, SAL, CASE WHEN SAL>=2000 THEN 1000 ELSE(CASE WHEN SAL>=1000 THEN 500 ELSE 0 END)END AS BONUS FROM EMP; |
11. ROWNUM과 ROWID
1) ROWNUM
- SELECT문의 결과에 대해서 임시로 부여되는 논리적인 일련번호 (SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호)
- 조회되는 행 수를 제한할떄 많이 사용
- ROWNUM을 사용해서 한 개의 행을 가지고 올 수 있으나, 여러 개의 행을 가지고 올 떄는 인라인 뷰(inline view)를 사용
SELECT * FROM EMP WHERE ROWNUM <-1;
SELECT * FROM(SELECT ROWNUM list, ENAME FROM EMP) WHERE list <=5; <- inline view : FROM절에 SELECT문 사용
SELECT * FROM(SELECT ROWNUM list, ENAME FROM EMP) WHERE list BETWEEN 5 AND 10; <- 웹페이지를 페이지 단위로 조회 구현..ㅎㅎ
2) ROWID
- ORACLE DB 내에서 데이터를 구분할 수 있는 유일한 값
- SELECT ROWID FROM EMP; 처럼 SELECT문으로 확인 가능
- 데이터의 저장 위치 등을 알 수 있음 (포인터 역할!)
3) TOP
- sql server에서 결과 집합으로 출력되는 행의 수를 제한
TOP (반환할 행의 수) [PERCENT] [WITH TIES] |
- PERCENT : 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨을 나타냄 - WITH TIES : ORDER BY 절이 지정된 경우에만 사용할 수 있으며, TOP N(PERCENT)의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정 |
SELECT TOP(1) PLAYER_NAME FROM PLAYER; 이런 식으로 사용
12. WITH구문
- 서브쿼리를 사용해 임시 테이블이나 뷰처럼 사용할 수 있는 구문
- 서브쿼리 블록에 별칭 지정 가능
- 옵티마이저는 SQL을 인라인 뷰나 임시 테이블로 판단함
'[자격증] SQLD (SQL Developer)' 카테고리의 다른 글
[SQLD][책없이 공부]2과목 02. SQL 활용_01 JOIN과 집합연산자 (0) | 2019.11.26 |
---|---|
[SQLD][책없이 공부]2과목 01. SQL 기본_06 DCL, TCL (0) | 2019.11.18 |
[SQLD][책없이 공부]2과목 01. SQL 기본_04 함수 (0) | 2019.11.14 |
[SQLD][책없이 공부]2과목 01. SQL 기본_03 DML (0) | 2019.11.14 |
[SQLD][책없이 공부]2과목 01. SQL 기본_02 DDL (0) | 2019.11.14 |