행의 출처를 정한다
FROM대상 테이블과 조인이 출발 집합을 만듭니다. 여기서 행 수와 폭이 크게 달라집니다.
문장은 SELECT로 시작하지만 결과는 FROM에서 출발합니다. 조회가 이상하면 작성 순서가 아니라 논리 실행 순서로 다시 따라가면 됩니다.
대상 테이블과 조인이 출발 집합을 만듭니다. 여기서 행 수와 폭이 크게 달라집니다.
개별 행은 WHERE, 묶인 결과는 HAVING으로 거릅니다. NULL은 IS NULL로 비교합니다.
필요 컬럼, 별칭, 중복 제거, 조건 표현식이 여기서 확정됩니다. 운영 쿼리는 SELECT *를 피합니다.
정렬과 행 제한은 마지막 단계입니다. ORDER BY는 SELECT에서 만든 별칭을 사용할 수 있습니다.
= NULL은 TRUE가 아니라 UNKNOWN입니다. 조건에는 IS NULL을 씁니다.
%, _는 패턴 기호입니다. 앞쪽 % 검색은 큰 테이블에서 비용이 커질 수 있습니다.
NOT → AND → OR 순서로 묶입니다. 섞어 쓸 때는 괄호로 의도를 고정합니다.
탐색용으로는 편하지만 운영 쿼리에서는 전송량과 스키마 변경 영향을 키웁니다.
조건 컬럼은 가능하면 그대로 두고, 비교 값의 타입을 컬럼 타입과 맞춥니다.
출력값 조합 기준으로 중복을 제거합니다. 필요한 중복인지 먼저 확인합니다.