728x90
SQL에서 SELECT 문은 가장 자주 사용되는 명령어 중 하나입니다. 하지만 우리가 작성하는 SELECT 문은 실제로 데이터베이스가 처리하는 순서와 다릅니다. 이 글에서는 SQL의 SELECT 쿼리가 실제로 어떻게 실행되는지를 단계별로 자세히 알아보겠습니다.
우리가 흔히 쓰는 SELECT 문
SELECT name, age
FROM users
WHERE age > 20
GROUP BY age
HAVING COUNT(*) > 1
ORDER BY age DESC
LIMIT 10;
이 쿼리는 겉보기에는 위에서 아래로 순차적으로 실행되는 것처럼 보이지만, 실제로 데이터베이스가 처리하는 순서는 전혀 다릅니다.
SELECT 쿼리의 실제 실행 순서
SQL 표준에 따른 SELECT 문은 아래와 같은 순서로 실행됩니다:
- FROM
테이블이나 뷰 등 데이터를 가져올 소스를 지정합니다.
→ 예: FROM users - JOIN
여러 테이블을 조인하는 경우, 이 시점에서 병합이 일어납니다.
→ 예: INNER JOIN orders ON users.id = orders.user_id - WHERE
조건에 맞는 행(Row)만 필터링합니다.
→ 예: WHERE age > 20 - GROUP BY
지정한 컬럼을 기준으로 데이터를 그룹화합니다.
→ 예: GROUP BY age - HAVING
그룹화된 데이터에 조건을 적용합니다. WHERE과는 달리 집계 함수 사용 가능.
→ 예: HAVING COUNT(*) > 1 - SELECT
필요한 컬럼을 선택합니다. 이 단계에서 집계 함수도 계산됩니다.
→ 예: SELECT name, age - DISTINCT
중복된 결과를 제거합니다. (선택적 단계) - ORDER BY
결과를 정렬합니다.
→ 예: ORDER BY age DESC - LIMIT / OFFSET
최종 결과에서 원하는 개수만큼만 잘라냅니다.
→ 예: LIMIT 10
순서를 외우는 팁
외우기 쉽게 줄여보면:
F J W G H S D O L
- FROM
- JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- LIMIT
마무리
SQL의 SELECT 문은 우리가 작성하는 순서와 실제 실행 순서가 다르기 때문에, 정확한 실행 순서를 이해하는 것이 매우 중요합니다. 특히 WHERE과 HAVING의 차이, GROUP BY 이전/이후에 실행되는 단계 등을 잘 이해하면 복잡한 쿼리도 훨씬 쉽게 짤 수 있습니다.
728x90
'SQL' 카테고리의 다른 글
소프트 컬럼(Soft Column)이란? (0) | 2025.03.17 |
---|---|
데이터베이스에서 논리적 데이터 독립성과 물리적 데이터 독립성 (0) | 2025.02.24 |
데이터베이스 스키마의 3가지 구성 요소: 외부, 개념, 내부 스키마 완벽 분석 (0) | 2025.02.23 |
식별자 (0) | 2025.02.23 |
Oracle 계층적 쿼리 (Hierarchical Query) (0) | 2025.02.15 |