SQL ZOO[MySQL]Using Null

2022. 3. 20. 02:19Site/SQL ZOO

database of teacher
database of dept

 


부서가 NULL값인 teacher 조회

NULL을 비교할때에는 =, <, >를 통해 연산을 할수없고 IS NULL을 사용해야합니다

-> NULL의 비교연산을 통해 TRUE, FALSE가 될수없고 제 3인 값인 UNKNOWN으로 간주됨

ex)

NULL IS NULL = TRUE / NULL IS NOT NULL = FALSE / 3 IS NULL = FALSE / 3 IS NOT NULL = TRUE

3 = NULL -> UNKNOWN / 3 != NULL -> UNKNOWN / NULL = NULL -> UNKOWN

cf)

NULL의 특징

- 기본적인 의미 = UNKNOWN [0과 다름]

- NULL과 관련된 연산은 모두 NULL값으로 출력됨

- SELECET절에서 NULL비교연산시 -> UNKNOWN -> 오류발생 / WHERE절에서 NULL비교연산시 UNKNOWN -> FALSE반환


INNER JOIN 

정확한 결과를 출력하기위해 2개의 테이블의 교집합을 출력

CROSS JOIN에서 조인조건절이 만족된 행들만 남긴 조인

-> NULL값 포함[x]


LEFT JOIN

2개에 table에서중 왼쪽 table에 기준 -> 오른쪽 table에 매칭되는 레코드가 없을시 NULL표시


RIGHT JOIN

2개에 table에서중 오른쪽 table에 기준 -> 왼쪽 table에 매칭되는 레코드가 없을시 NULL표시


COALESCE를 이용하여 mobile number가 없는 teacher에게 07986 444 2266값으로 대신하고 teacher이름과 mobile number 조회

COALESCE = NULL값을 원하는 값으로 대체할수있습니다

첫번째 인자 mobile에 NULL값이 있으면 두번째인자 07986 444 2266로 변경해줍니다

ex)

COALESCE(x,y,z) = x if x is not NULL
  COALESCE(x,y,z) = y if x is NULL and y is not NULL
  COALESCE(x,y,z) = z if x and y are NULL but z is not NULL
  COALESCE(x,y,z) = NULL if x and y and z are all NULL

reference check : https://sqlzoo.net/wiki/COALESCE


COALESCE와 LEFT JOIN을 이용하여 teacher 이름과 부서이름 조회 [부서가 없는 경우 None으로 변경]


COUNT를 이용하여 teacher의 수와 mobile phone의 수 조회


COUNT와 부서이름을 그룹화하여 각각의 부서이름과 인원 조회


CASE문을 이용하여 부서가 1, 2이면 Sci 그외에는 Art로 변경


CASE문을 이용하여 부서가 1, 2이면 Sci 부서가 3이면 Art 그외에는 None으로 변경

'Site > SQL ZOO' 카테고리의 다른 글

SQL ZOO[MySQL]Self join  (0) 2022.03.29
SQL ZOO[MySQL]Using Null Quiz  (0) 2022.03.20
SQL ZOO[MySQL]JOIN Quiz 2  (0) 2022.03.15
SQL ZOO[MySQL]More JOIN operations  (0) 2022.03.15
SQL ZOO[MySQL] JOIN Quiz  (0) 2022.03.11