ISNULL / NULLIF / COALESCE

ISNULL(param1, param2)

SQL Server에서 사용되는 함수

  • param1의 결과값이 NULL이면 param2의 결과를 출력

NVL(param1, param2)

Oralce에서 사용되는 함수

  • param1의 결과값이 NULL이면 param2의 결과를 출력

NULLIF(param1, param2)

  • param1과 param2의 결과값이 동일하면 NULL 리턴
    그렇지 않다면 param1 리턴

COALESCE(param1, param2, param3...)

  • 각 param에서 NULL이 아닌 최초의 결과값을 리턴
    각 param의 모든 결과값이 NULL이라면 NULL반환한다

예)

Table_T

col1col2col3
3
24
135
select sum(coalesce(c1, c2, c3)) from Table_T;
>> 6
(col1의 null이 아닌 값 중 처음:1 + col2의 null이 아닌 값 중 처음:2 + col3의 null이 아닌 값 중 처음:3)

NULL이 포함된 연산

  • 사칙연산에 NULL이 포함되면 결과는 NULL이다
  • NULL 여부의 판단은 IS NULL 또는 IS NOT NULL

AVG(param)

param에 NULL값이 있다면 제외하고 연산한다.

COUNT(*) 얘 말고는 NULL값을 제외하고 연산한다.


HAVING

  • GROUP BY를 사용하지 않는데 HAVING 사용?
    가능하다

    • 그렇다면 WHERE와 무슨 차이?

      • WHERE:
        쿼리 결과셋을 내기 전, FROM으로 가져온 데이터를 필터링한다. 이후 SELECT에 의해 결과셋이 반환.
        개별 행에 대해 / 최종 결과셋 이전에 / 결과셋을 위한 필터링

      • HAVING:
        FROM - WHERE - SELECT 기본 구조에 의해 도출된 결과셋에서 데이터를 조건에 따라 필터링한다.
        전체 행에 대해 / 결과셋 이후 / 결과셋에서 최종 필터링


TOP(N) WITH TIES col GROUP BY

결과셋의 최상단부터 N개 출력 / col에 동일한 값이 있다면 같이 출력한다 / 정렬 방식


JOIN에 대한 설명 선택지

  • 일반적으로 JOIN은 PK와 FK 값의 연관성에 의해 성립된다.
  • DBMS 옵티마이저는 FROM절에 나열된 테이블들을 임의로 3개 정도씩 묶어서 JOIN을 처리한다.(X) 2개
  • EQUI JOIN은 JOIN에 관여하는 테이블 간의 컬럼 값들이 정확하게 일치하는 경우에 사용되는 방법이다.
  • EQUI JOIN은 = 연산자에 의해서만 수행되며, 그 이외의 비교 연산자를 사용하는 경우에는 모두 Non EQUI JOIN이다.
  • 대부분 Non EQUI JOIN을 수행할 수 있지만, 때로는 설계상의 이유로 수행이 불가능한 경우도 있다.

0개의 댓글