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 이 아닌 제대로 된 값만 저장되도록 한다.