SQL SELECT 문의 실행 순서

dong5854·2022년 3월 27일
0

sql

목록 보기
6/7

SELECT 문의 각 절을 작성 순서대로 정리하면 아래와 같다.

1. SELECT
2. FROM
3. WHERE
4. GROUP BY
5. HAVING
6. ORDER BY
7. LIMIT

하지만 각 절들의 실행은 우리가 작성한 순서와 다른 순서로 해석 및 실행된다.
실행 순서는 아래와 같다.

1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER BY
7. LIMIT

어떤 식으로 해석 및 실행되는지 하나씩 차례대로 살펴보면 다음과 같다.

1. FROM: 어느 테이블을 대상으로 할 것인지를 먼저 결정한다.
2. WHERE: 해당 테이블에서 특정 조건들을 만족하는 row들만 선별한다.
3. GROUP BY: row들을 그루핑 기준대로 그루핑한다. 하나의 그룹은 하나의 row로 표현된다.
4. HAVING: 그루핑 작업 후 생성된 여러 그룹들 중에서, 특정 조건들을 만족하는 그룹들만 선별한다.
5. SELECT: 모든 컬럼 또는 특정 컬럼들을 조회한다. SELECT절에서 컬럼 이름에 alias를 붙인 게 있다면, 이 이후 단계인 ORDER BYLIMIT부터는 해당 alias를 사용할 수 있다.
6. ORDER BY: 각 row를 특정 기준에 따라서 정렬한다.
7. LIMIT: 이전 단계까지 조회된 row들 중 일부 row들만을 추린다.

위의 실행 원리에 따라 생각해본다면 CASE문에서 SELECT절에서 설정한 alias를 바로 사용할 수 없는 이유와 WHEREHAVING절의 차이도 이해 할 수 있다.

profile
https://github.com/dong5854?tab=repositories

0개의 댓글