|
|
1. FROM and JOIN
- 전체 데이터 집합을 찾기 위해 FROM과 JOIN절이 먼저 실행됨
- 서브쿼리가 있다면 JOIN될 데이터 테이블을 만들기 위해 임시 테이블을 생성할 수 있음
2. WHERE
- 1에서 얻은 전체 데이터 집합의 각각의 row에 WHERE에 정의된 제약조건이 적용되고, 제약조건을 만족하지 않는 row는 버려짐
- FROM절에서 요청된 테이블의 열에만 접근 가능
- SELECT절의 Alias로 된 컬럼은 사용불가
- 아직 실행되지 않은 부분에 의해 값이 바뀔 수 있으므로 당장 처리하지 않음
3. GROUP BY
- 2에서 제약조건을 충족한 row들을 GROUB BY에 지정된 컬럼의 공통값으로 그룹화됨
- 지정된 컬럼의 고유한 개수만큼 row가 생성됨
4. HAVING
- 3에서 그룹화된 테이블은 2와 마찬가지로 제약조건을 적용하여 제약조건을 만족하지 않는 row는 버려짐
- 2와 마찬가지로 Alias로된 컬럼은 사용 불가
5. SELECT
- SELECT부분의 모든 표현식이 최종적으로 계산됨
6. DISTINCT
- 5에서나온 데이터에서 DISTINCT로 표시된 컬럼의 중복값이 제거됨
7. ORDER BY
- 지정된 데이터를 따라 오름차순 또는 내림차순으로 정렬됨
- 쿼리의 SELECT절이 수행되었으므로 SELECT의 Alias로 정렬 가능
8. LIMIT, OFFSET
- LIMIT 및 OFFSET으로 지정된 범위를 벗어나는 행은 삭제되고 최종 결과값만 남음
https://sqlbolt.com/lesson/select_queries_order_of_execution
#Database
#Query