티스토리 뷰
SQL 실행 순서
SQL 실행 순서는 우리가 SQL을 작성하는 순서와 실제 SQL이 쿼리를 처리하는 순서가 다르다.
SQL 쿼리의 논리적 순서
- FROM: 가장 먼저 실행. 어떤 테이블에 데이터를 가져올지 결정
- WHERE: FROM에서 가져온 테이블의 개별 행을 필터링한다.
- GROUP BY: WHERE 절의 필터링을 통과한 행들을 기준으로 그룹을 형성한다.
- HAVING: GROUP BY를 통해 만들어진 그룹들을 필터링한다.
- SELECT: 위의 조건을 통과한 행 또는 그룹들에 대해 보고자 하는 칼럼을 선택하고, 집계 함수(SUM, AVG 등등), 별칭(AS) 등이 이 단계에서 이루어진다.
- ORDER BY: SELECT 절에서 선택된 최종 결과 후보들을 지정된 순서로 정렬한다. (SELECT가 ORDER BY 보다 먼저 실행하기 때문에 별칭을 사용할 수 있다.)
- LIMIT: 정렬된 결과 중에서 최종적으로 반환할 행의 개수를 제한한다.
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT
SQL 실행 순서 쿼리 예)
2026년 3월 3일 이전에 들어온 주문 중에서(WHERE), 고객별로 그룹화하여(GROUP BY), 주문 건수가 3회 이상인 고객을 찾아서(HAVING), 고객의 이름과 총 구매 금액을 조회하고(SELECT), 총 구매 금액을 기준으로 내림차순 정렬하고(ORDER BY), 3개의 데이터만 출력해라(LIMIT).
SELECT
customer_name,
SUM(price * quantity) AS total_purchase -- 5단계
FROM
order_stat -- 1단계
WHERE
order_date < '2026-03-03' -- 2단계
GROUP BY
customer_name -- 3단계
HAVING
COUNT(*) >= 3 -- 4단계
ORDER BY
total_purchase DESC -- 6단계
LIMIT 3; -- 7단계
정리
SQL 실행 순서는 작성한 SQL 순서와 다를 수 있다. 실제 물리적인 실행 순서는 FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT와 같다.
본 포스팅은 “ 김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)/인프런”를 학습한 내용을 정리한 것
댓글
