Transcript 임현민

SQLER
Vision2
임현민
From 절에 대한 분석
•
복잡한 JOIN 절에 대한 읽기 순서
–
예>
Microsoft Project Server Report Pack
– Timesheet Audit Report
From 절에 대한 분석
•
복잡한 JOIN 절에 대한 읽기 순서
–
순서
1. 첫 번째(또는 다음) ON 키워드를 찾는다.
2. ON 절부터 위쪽으로 매칭되지 않는 JOIN을 찾는다.
3. 이렇게 찾은 JOIN 과 ON 사이에 있는 부분이 JOIN 의 오른쪽 부분이다.
4. 계속해서 위로 올라가면서 JOIN 의 왼쪽 부분을 찾는다.
5. 모든 ON에 대한 쌍을 찾을 때까지 반복한다.
–
코딩 포맷을 맞추면 가독성이 향상된다.
From 절에 대한 분석
•
필터링
–
필터의 종류
•
WHERE
–
FROM 절에서 만든 데이터(행)를 필터링하는 기능
–
•
(GROUP BY ~ ) HAVING
–
GROUP BY 절이나 집계 함수로부터 만들어지는 그룹에 대해서 적용
–
•
그룹 결과를 필터링
([LEFT/RIGHT/FULL][INNER/OUTER] JOIN ~ )ON
–
일치하는 데이터를 필터링
–
–
논리적으로 FROM 절이 수행된 후에 처리
JOIN 을 구성하는 양쪽 테이블의 컬럼을 포함할 경우 일치하는 결과를 필터링하는 것으
로 이해하면 됨.
ON 절의 조건자와 WHERE 절의 조건자는 다른 필터이다.
•
예) INNER JOIN
From 절에 대한 분석
(~계속)
•
예) OUTER JOIN
From 절에 대한 분석
(~계속)
• 결과가 모든 데이터를 반환하는 거라면(컬럼이 NULL 로 처리되어있을 경우) ON 절에 조건을 사
용하면 된다.
–
•
WHERE 절에 사용할 경우 NULL 데이터는 걸러지게 된다.
•
필터링 – 행은 WHERE 절, 그룹은 HAVING 절, 일치는 ON 절.
(참고)
•
NULL 허용 설정
–
열에서 NULL 은 올바른 데이터를 얻기 위해 기본적으로 필요한 설정이다.
–
NULL 은 NULL 뿐만 아니라 다른 어떠한 값과 비교할 수 없다.
–
NULL = NULL 은 false를 의미하는 것이 아닐 뿐이고 단지 결과가 NULL로 처리되는 것이
다.
–
NOT(NULL )과 같은 표현식 역시 NULL 을 출력하지만, 마치 true와 같은 값이 출력되는
것처럼 보일 수도 있다
–
쿼리는 조건이 true은 경우에만 행을 출력하게 되어 있어서 NULL 과 같은 결과를 얻을 경
우 원하는 데이터를 가져오지 못할 수 있다.
–
불확실한 값을 가질 수도 있을 경우에는 NULL 허용을 설정해도 무방하지만 그렇지 않을
경우에는 두 가지 문제점이 있다.
»
SQL Server 엔진은 쿼리를 더 빨리 수행하기 위해 모든 정보들을 참조한다, 따라
서 쿼리 최적화기로 하여금 값이 NULL 인지를 판단하지 않도록 하기 위해서는
반드시 값을 입력하도록 해야 한다.
»
NULL 값이 없어야 하는 경우에 NULL 허용으로 설정해 놓으면 주기적으로
NULL 값이 있는지를 검사하는 작업을 수행해줘야 한다, NULL 허용하지 않음으
로 설정하기만 하면 UI에서 입력되는 데이터와는 상관없이 항상 NULL 이 아닌
제대로 된 값만 저장되도록 한다.