본문 바로가기

SQL

[SQLD]노랭이 개정판 2장 1~30번 , NULL 정리

오답 정리 

Q7. WHERE 절과 HAVNING절 차이 

WHERE : 전체 데이터에서 특정한 조건으로 필터링하는 역할 (집계함수 사용 불가)

HAVING : 집계된 결과에서 필터링하는 역할

 

Q11.

  '' 입력 시 조회하기
ORACLE NULL IS NULL()
SQL '' 컬럼명 = ''

 

 

Q15. 줄바꿈도 COUNT된다

CHR(10) : 줄바꿈

REPALCE(대상,CHR(10)) :  줄바꿈 제거

 

Q16. TO_CHAR() : 날짜를 문자형으로 형 변환

1/24/60 : 1분

1/24/(60/10) : 10분

1/12/(60/30) : 1시간

 

Q23.

COUNT(*) : NULL 값을 포함한 행의 수를 출력한다

COUNT(표현식) : 표현식의 값이 NULL값인 것을 제외한 행의 수를 출력한다

COUNT(NULL) : 0

 

Q28. ORDER BY (CASE WHEN ID = 999 THEN 0 ELSE ID END)

->ORDER BY의 정렬조건으로만 사용된다. 실제 값에는 영향을 주지않는다 

 

 

Q29. SELECT 절에 없는 컬럼명이어도 ORDER BY에서 정렬 조건으로 사용 가능하다

ORDER BY COUNT(*) ASC -> GROUP BY절이 있다면 사용 가능 (그룹된 행의 수)

 

NULL

NULL과 공집합

- NULL : 값이 정의가 안된 것

- 공집합 : 조건에 맞는 결과가 없는 것 (=FALSE)

 

  NULL 공집합, FALSE
COUNT() 0 0
NVL() 리턴값 공집합
문자,일반 함수() NULL 공집합
집계함수() NULL NULL

 

- WHERECOUNT(공집합) = 0

- HAVING 절 COUNT(공집합) = 0

 

 

NULL

IN (NULL) NULL제외, 무시
EXISTS (NULL) NULL제외, 무시
NOT IN (NULL) 공집합
NOT EXISTS (NULL) NULL 출력

 

- ORACLE은 NULL 값을 가장 큰 값으로 간주

- SQL은 NULL값을 가장 작은 값으로 간주

 

NULL 관련 함수

DECODE(A,B,C) A가 B이면 C 리턴, 그 외 NULL리턴
DECODE(A,B,C,D) A가 B이면 C 리턴, 그 외 D 리턴
DECODE(A,B,C,D,E) A가 B이면 C, D면 E 리턴, 그 외 NULL 리턴
NVL(A,B) A가 NULL이면 B 리턴 아니면 A 리턴
NVL(A,B,C) A가 NULL이면 C 리턴 아니면 B 리턴
NULLIF(A,B) A=B이면 NULL 리턴 아니면 A 리턴
COALESCE(A,B) A가 NULL이면 B 리턴
COALESCE(A,B,C) A가 NULL이면 B 리턴, B가 NULL이면 C 리턴
IFNULL(A,B) A가 NULL이면 B리턴 아니면 A

 

'SQL' 카테고리의 다른 글

[MYSQL] 프로그래머스 SQL 문제풀기  (0) 2024.03.18
[MYSQL] LEFT,MID,RIGHT/ SUBSTR  (0) 2024.03.14
[MYSQL] GOALESCE(), 소수점 처리, DATEDIFF(), TIMESTAMPDIFF()  (0) 2024.02.16
[MYSQL] DATE_FORMAT()  (0) 2024.02.14
[MYSQL] Subquery  (0) 2024.01.06