SELECT 기본 핵심 정리

SELECT는 행을 고른 뒤, 보여줄 값의 모양을 만들고 결과를 마감합니다.

문장은 SELECT로 시작하지만 결과는 FROM에서 출발합니다. 조회가 이상하면 작성 순서가 아니라 논리 실행 순서로 다시 따라가면 됩니다.

1. 출발

행의 출처를 정한다

FROM

대상 테이블과 조인이 출발 집합을 만듭니다. 여기서 행 수와 폭이 크게 달라집니다.

2. 필터

필요한 행만 남긴다

WHERE / GROUP BY / HAVING

개별 행은 WHERE, 묶인 결과는 HAVING으로 거릅니다. NULL은 IS NULL로 비교합니다.

3. 출력

값의 모양을 만든다

SELECT / DISTINCT / AS / CASE

필요 컬럼, 별칭, 중복 제거, 조건 표현식이 여기서 확정됩니다. 운영 쿼리는 SELECT *를 피합니다.

4. 마감

사용자에게 보낼 결과를 정리한다

ORDER BY / LIMIT

정렬과 행 제한은 마지막 단계입니다. ORDER BY는 SELECT에서 만든 별칭을 사용할 수 있습니다.

NULL

= NULL은 TRUE가 아니라 UNKNOWN입니다. 조건에는 IS NULL을 씁니다.

LIKE

%, _는 패턴 기호입니다. 앞쪽 % 검색은 큰 테이블에서 비용이 커질 수 있습니다.

AND / OR

NOT → AND → OR 순서로 묶입니다. 섞어 쓸 때는 괄호로 의도를 고정합니다.

SELECT *

탐색용으로는 편하지만 운영 쿼리에서는 전송량과 스키마 변경 영향을 키웁니다.

성능

조건 컬럼은 가능하면 그대로 두고, 비교 값의 타입을 컬럼 타입과 맞춥니다.

DISTINCT

출력값 조합 기준으로 중복을 제거합니다. 필요한 중복인지 먼저 확인합니다.