티스토리 뷰
Searched Case Expression과 Simple Case Expression의 차이
- 이 둘의 가장 큰 차이점은 Simple Case Expression은 'expression'을, Searched Case Expression은 'Condition'을 사용하여 Return 값이 정해집니다.
예시)
Searched Case Expression
SELECT t.id,
CASE WHEN t.color = 1 THEN 'Red'
WHEN t.color = 2 THEN 'Blue'
WHEN t.color = 3 THEN 'Green'
ELSE 'NoColor' END AS color
FROM @t t
위의 예시를 보면 Searched Case Expression에서는 t.color의 조건에 따라 결과값을 리턴해주는 것을 확인할 수 있다.
출처: https://bangganji.tistory.com/395 [어정쩡하게 살지 말자!]
Simple Case Expression
SELECT t.id,
CASE t.color WHEN 1 THEN 'Red'
WHEN 2 THEN 'Blue'
WHEN 3 THEN 'Green'
ELSE 'NoColor' END AS Color
FROM @t t
위의 예시를 보면 Simple Case Expression에서는 t.color가 무슨 값인지의 expression에 따라서 리턴값이 정해진다.
오라클에서 날짜 연산
1/24 | 1시간 |
1/24/60 | 1분 |
1/24/30 | 2분 |
1/24/12 | 5분 |
1/24/6 | 10분 |
1/24/(60/10) | 10분 |
select sysdate,
(sysdate-1/24/60) "1분 전",
(sysdate-1/24/30) "2분 전",
(sysdate-1/24/12) "5분 전",
(sysdate-1/24/6) "10분 전",
(sysdate-1/144) "10분 전",
(sysdate-30/1440) "30분 전",
(sysdate-1/24) "1시간 전",
trunc(sysdate-1) "1일 전",
trunc(sysdate-7) "7일 전",
trunc(sysdate-30) "30일 전",
trunc(sysdate+1)-6/24 "6AM 전",
trunc(sysdate+1)-2/24 "2PM 전"
from dual;
출처: https://oracle.tistory.com/216 [안나푸르나]
ISNULL의 사용
ISNULL함수는 결과값이 NULL일 경우 지정된 값을 반환한다. 칼럼의 NULL값을 확인할 때는 ISNULL을 사용해야 한다.
추가사항 : SELECT COUNT(COL1) FROM TAB1 WHERE COL2 = NULL --> 이 WHERE절은 잘못되어있다.
오라클에서 NULL은 데이터가 존재하지 않는 상태이기 때문에, 우리가 알고 있는 일반적인 연산자를 사용할 수 없다.
WHERE COL2 IS NULL 로 사용하여야 NULL값인 경우의 행을 반환한다.
*NULL 비교는 오직 IS NULL, IS NOT NULL로만 가능
COALESCE 함수의 쓰임
사용 : 첫번째 NULL이 아닌 값을 반환한다.
각 ROW에서 첫번쨰로 NULL이 아닌 값을 반환한다.
집계함수의 NULL 처리
- 다중행 함수에서는 NVL 함수를 사용하게 되면 오히려 불필요한 과부하가 걸려서 다중행 함수안에 NULL처리 함수를 사용할 필요가 없다.
- 다중행 함수는 전체건수 중에서 일부만 NULL인 경우 NULL인 행을 다중행 함수에서 제외하고 처리한다.
- AVG 함수, SUM 함수, COUNT 함수 등에서 NULL인 행은 제외 되고 집계된다
SQL 실행순서
-문법 순서-
SELECT - 1
FROM - 2
WHERE - 3
GROUP BY - 4
HAVING - 5
ORDER BY - 6
-실행 순서-
FROM - 1
WHERE - 2
GROUP BY - 3
HAVING - 4
SELECT - 5
ORDER BY - 6
** SQL 실행순서에 의해 HAVING 절은 SELECT 절보다 선행처리된다. 그래서 HAVING COUNT(*) > 1 이라는 조건이 있을 경우 건수가 2개이상인 건만 추출이 되게 된다.
출처: https://police84.tistory.com/69 [찐빵의 IT World]
ORDER BY 절에 대한 것( pg71, 57번)
참고 링크 : http://www.gurubee.net/lecture/2374
- ORDER BY 절에서 컬럼명 대신 Alias 명이나 컬럼 순서를 나타내는 정수를 혼용하여 사용할 수 있다.
아래와 같이 컬럼의 순서를 나타내는 정수로도 ORDER BY 문 사용이 가능하다.
- GROUP BY 절을 사용하는 경우 ORDER BY 절에 집계 함수를 사용할 수도 있다.(내가 틀렸던 부분)
--> HAVING 절에만 집계함수를 사용할 수 있는줄 알았는데, ORDER BY문에도 가능하다.
TOP(N) 쿼리
- SQL SERVER의 TOP N 질의문에서 N에 해당하는 값이 동일한 경우 함께 출력되도록 하는 WITH TIES 옵션을 ORDER BY 절과 함께 사용하여야 한다.
Redo 로그 매커니즘 용어
- Log Force at commit : 로그 버퍼를 주기적으로 로그파일에 기록하되 늦어도 커밋 시점에는 반드시 기록해야 함을 뜻함
- Fast Commit : 사용자의 갱신내용이 메모리상의 버퍼 블록에만 기록된채 아직 디스크에 기록되지 않았지만, Redeo로그를 믿고 빠르게 커밋 완료하는 것을 말한다
- Delayed Block Cleanout : 오라클만의 독특한 메커니즘으로서 변경된 블록을 커밋시점에 바로 Cleanout(로우 Lock정보 해제, 커밋정보 기록) 하지 않고 그대로 두었다가 나중에 해당블록을 처음 읽는 세션에 의해 정리되도록 하는 것을 말한다.
- Write Ahead Logging : 버퍼 캐시블록을 갱신하기 전에 변경사항을 먼저 로그 버퍼에 기록해야 하며, Dirty 버퍼를 디스크에 기록하기 전에 해당 로그 엔트리를 먼저 로그 파일에 기록해야 한다.
'Computer Science' 카테고리의 다른 글
[데이터베이스] SQL 파싱 (0) | 2020.05.07 |
---|---|
[데이터베이스] 데이터 파일 구조 (0) | 2020.05.05 |
[인덱스] Composite INDEX(결합 인덱스) (1) | 2020.01.27 |
[인덱스] DESCENDING INDEX(내림차순 인덱스) (0) | 2020.01.27 |
[인덱스] Function Based Index(FBI - 함수기반 인덱스) (0) | 2020.01.27 |
- Total
- Today
- Yesterday
- github
- 관계대수
- Inception
- 인셉션
- 2023년
- 월급쟁이부자들
- 깃
- 폭포수
- GIT
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 도커
- 내년은 빡세게!!
- Use case
- 열반스쿨기초반
- resize
- 개발자 회고
- 부동산공부
- Spring boot
- 재테크공부
- 항해플러스후기
- 항해플러스백엔드
- 파라메터
- docker
- pop_back
- front
- 항해솔직후기
- 유즈케이스
- push_back
- 깃허브
- 월부닷컴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |