SQL 문을 작성하다 보면 "절(clause)의 순서"가 정해져 있다는 걸 반드시 지켜야 합니다. 이 순서가 맞지 않으면 SQL 문은 실행되지 않고, 에러가 발생하게 되죠.
SQL 문을 작성할 때 지켜야 할 순서
SQL 문은 보통 아래와 같은 작성 순서로 구성됩니다.
- SELECT – 어떤 컬럼을 조회할지 지정
- FROM – 어떤 테이블에서 가져올지 지정
- WHERE – 조건에 맞는 row만 필터링
- GROUP BY – 특정 기준에 따라 그룹핑
- HAVING – 그룹핑된 결과에서 조건으로 걸러내기
- ORDER BY – 정렬 기준 설정
- LIMIT – 가져올 row 개수 제한
즉, SQL을 작성할 때는 반드시 위 순서를 지켜야 합니다.
하지만 실제 실행 순서는 다르다!
흥미로운 사실은, SQL 문이 우리가 쓴 순서대로 실행되는 게 아니라는 점입니다. 데이터베이스는 아래 순서대로 SQL을 해석하고 실행합니다.
- FROM – 어떤 테이블을 대상으로 할지 먼저 결정
- WHERE – 테이블에서 조건에 맞는 row만 선택
- GROUP BY – 남은 row들을 그룹으로 묶음
- HAVING – 그룹 단위에서 조건에 맞는 그룹만 남김
- SELECT – 조회할 컬럼들을 선택
- 여기서 alias(별칭)을 지정하면 이후 절에서 사용 가능
- ORDER BY – 결과를 정렬
- LIMIT – 최종적으로 몇 개만 보여줄지 결정
각 절의 실행 의미 정리
- FROM: "어느 테이블에서 가져올까?" → 출발점
- WHERE: "row 단위로 필터링" → 그룹핑 전 조건
- GROUP BY: "row들을 하나의 그룹으로 묶기"
- HAVING: "그룹 단위에서 조건 걸기" → 그룹핑 후 조건
- SELECT: "조회할 컬럼 뽑기" → 여기서 alias 지정 가능
- ORDER BY: "정렬하기"
- LIMIT: "필요한 만큼만 자르기"
핵심 요약
- 작성 순서: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT
- 실행 순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
💡 이 실행 순서를 확실히 기억하고 있으면,
실무에서 아무리 복잡한 SQL 문을 보더라도 결과가 어떻게 나올지 쉽게 파악할 수 있습니다. 특히 WHERE vs HAVING의 차이도 자연스럽게 이해되죠.
👉 SQL 공부할 때는 "작성 순서"와 "실행 순서"를 둘 다 암기하는 게 포인트입니다!
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| SQL 서브쿼리와 ANY, ALL 키워드 (3) | 2025.08.18 |
|---|---|
| SQL 다양한 조인(Join) 연산 정리 (5) | 2025.08.18 |
| SQL에서 GROUP BY 사용 시 반드시 지켜야 할 규칙 (2) | 2025.08.17 |
| MySQL SUBSTRING 함수로 데이터 가공하기 (1) | 2025.08.17 |
| MySQL CASE 문 실행 순서 이해하기 (1) | 2025.08.17 |