1. select 절에서 정의한 별칭은 실행 앞 순서에서 사용 하지 못한다.
- 실행 순서 : from → where → group by → having → select → order by
2. 문자형 함수
- LPAD('x' ,'5' ,'x') : 'xxxxx' ( 첫번째 인수에다가 세번째 인수를 왼쪽에서 삽입해서 5자리로 만듬)
- INSTR('www.Jemin.co.kr','.',5,2) : 13 (5번째부터 '.'를 찾아 2번째로 발견된 '.'의 위치 반환)
- CONCAT, ||, + 는 실행 결과가 같다
3. 숫자형 함수
- ROUND(12345.678 ,-2) : 음수임으로 십의 자리에서 반올림 12300
4. NULL 관련 함수
- NVL(표현식1, 표현식2 ),ISNULL(표현식1, 표현식2)
- 표현식1 결과값이 NULL 이면 표현식2 출력
- NULLIF 표현식1, 표현식2 )
- 표현식1과 표현식2가 같으면 NULL, 같지않으면 표현식1 출력
- COALESCE( 표현식1, 표현식2 )
- 표현식1이 NULL 이면 표현식2 출력
- 표현식1이 NULL 이 아니면 원래 값 출력
5.
SELECT CASE SUBSTR(JUMIN,7,1) WHEN 1 THEN '남자' ELSE' 여자 END FROM TAB1;
SUBSTR(JUMIN,7,1)을 WHEN 앞으로 뽑은 경우
when a = 1
when a = 2
when a = 3 이렇게 앞에 a처럼 같은걸로만 확인하면 when 앞으로 뺼 수 있다.
대신 이렇게 앞으로 뺸 경우 데이터 타입이 같아야한다.
하지만 위에 내용은 String, int 다르기 때문에 에러가 뜬다.
SELECT CASE SUBSTR(JUMIN,7,1) WHEN `1` THEN '남자' ELSE' 여자 END FROM TAB1;
SELECT WHEN CASE SUBSTR(JUMIN,7,1) = 1('1' 둘 다 된다 묵시적 형변환 됨) THEN '남자' ELSE' 여자 END FROM TAB1;
6.
날짜 + 1 or 날짜 -1 은 하루가 빠지는 것이다. 고로 1은 하루를 뜻함
1/24 == 하루를 24시간으로 나누면 1시간
1/24/60 == 1시간은 60으로 나누면 1분
고로 위에 30/24/60 은 30 X 1 /24 / 60 == 30 X 1분 , 30분
7.
- COUNT시 COUNT 안에 CASE문에서 ELSE가 붙으면 안된다
- 왜냐하면 ELSE가 붙으면 조건에 부합하는 값만 COUNT 가 되는게 아니라 ELSE에 있는것도 포함해서 세지기 때문이다.
8.
SELECT COUNT(CODE)
FROM TAB1
WHERE CODE LIKE AOR CODE LIKEB;
- OR 계산시 (A경우의 수 + B경우의 수 ) - ( A,B 둘다 만족 시키는 경우의 수)
- 합집합에서 교집합 빼기
9. 연산자 우선 순위
NOT → AND → OR
10 . NULL 을 포함한 count, sum 문제
- SUM 은 NULL을 더하지 않음
- NULL로만 구성된 SUM은 NULL 반환
- NULL은 > < 대소비교를 하지않고 빠진다.
SELECT SUM(COL2) + SUM(COL3) 500 + 500 == 1000
SELECT SUM(COL2) + SUM(COL3) , WHERE COL1 >0; NULL + 100 == NULL
SELECT SUM(COL2) + SUM(COL3) , WHERE COL1 IS NOT NULL; 300 + 100 == 400
SELECT SUM(COL2) + SUM(COL3) , WHERE COL1 IS NULL; 200 + 400 == 600
'[SqL]' 카테고리의 다른 글
sqld 공부 -(3) (0) | 2024.08.24 |
---|---|
sqld 공부 -(2) (0) | 2024.08.23 |
[2장] 정규화와 성능 (0) | 2024.08.09 |
[2장] 성능 데이터 모델링의 개요 (0) | 2024.08.08 |
[1장] 식별자 -(1) (0) | 2024.08.07 |