본문 바로가기
Database

SQL SELECT 쿼리 실행 순서

by 코딩개발 2021. 9. 2.
728x90
반응형

SQL 문법 작성 순서

 

① SELECT 컬럼명

② FROM 테이블명

③ WHERE 조건식

④ GROUP BY 컬럼명

⑤ HAVING 조건식

⑥ ORDER BY 칼럼명

 

SQL 실행 작동 순서

 

① FROM

② ON

③ JOIN

④ WHERE

⑤ GROUP BY

⑥ CUBE | ROLLUP

⑦ HAVING

⑧ SELECT

⑨ DISTINCT

⑩ ORDER BY

⑪ TOP

 

1. FROM 과 JOIN

데이터 셋의 총양을 결정하기 위해 FROM 절과 JOIN 문이 먼저 실행되며, 서브쿼리도 포함

서브 쿼리가 실행될 때 모든 행(row)과 열(column)을 포함하는 임시 테이블이 생성될 수 있음

 

* 서브쿼리(Subquery): 쿼리 내에 있는 쿼리

(WHERE, FROM, SELECT 절 안에 들어가는 쿼리를 통칭하여 서브 쿼리라고 함)

 

2. WHERE

데이터 셋의 총양을 구한 뒤, 제약조건인 WHERE 이 각 행(row)에 적용되어 조건을 충족하지 않은 행을 제거

WHERE 절에서는 ALIAS를 적용할 경우 대부분의 데이터베이스에서 오류가 발생함

 

(자세한 이유는 아래 문장 참고)

Aliases in the SELECT part of the query are not accessible in most databases since they may include expressions dependent on parts of the query that have not yet executed.

 

3. GROUP BY

WHERE 절이 적용된 뒤 남은 행들은 이후 GROUP BY 에 의해 그룹으로 묶임

 

4. HAVING

쿼리에 GROUP BY 절이 있다면 그룹으로 묶인 행에 제약조건인 HAVING 절이 각 행에 적용되어 조건을 충족하지 않은 행을 제거

WHERE 절과 마찬가지로 HAVING 절 또한 ALIAS를 적용할 경우 대부분의 데이터베이스에서 오류가 발생함

 

5. SELECT

SELECT 절 실행

 

6. DISTINCT

DISTINCT 절에 의해 남아있는 행 중 중복되는 행 제거

 

7. ORDER BY

ORDER BY 절에 의해 행들은 특정 규칙에 맞게 오름차순 혹은 내림차순으로 정렬되며 ALIAS를 적용해도 정상 작동

 

8. LIMIT / OFFSET

LIMIT과 OFFSET 절에 의해 지정된 범위를 벗어나는 행이 제거

 

 

 

참고

https://bicloud.tistory.com/20

 

SQL select 쿼리문 문법 순서/ 실행 순서

SQL의 문법 순서와 실행 순서는 서로 다릅니다. 문법 작성 순서와 실행 작동 순서를 알아보겠습니다. 문법 작성 순서 ① SELECT 컬럼명 ② FROM 테이블명 ③ WHERE 조건식 ④ GROUP BY 컬럼명 ⑤ HAVING 조

bicloud.tistory.com

https://jaimemin.tistory.com/1475

 

데이터베이스 쿼리 실행 순서

회사를 직접적으로 언급할 수는 없지만 데이터베이스 쿼리 실행 순서를 질문받은 적 있습니다. 코딩 테스트 난이도 정도의 쿼리 작성에는 어느 정도 자신이 있었지만 실행 순서는 한 번도 생각

jaimemin.tistory.com

https://sqlbolt.com/lesson/select_queries_order_of_execution

 

SQLBolt - Learn SQL - SQL Lesson 12: Order of execution of a Query

Now that we have an idea of all the parts of a query, we can now talk about how they all fit together in the context of a complete query. Complete SELECT query SELECT DISTINCT column, AGG_FUNC(column_or_expression), … FROM mytable JOIN another_table ON m

sqlbolt.com

 

보면 좋은글

https://myjamong.tistory.com/172

 

[Oracle] SQL SELECT 쿼리 실행 순서 처리 과정 :: 마이자몽

SELECT 쿼리 실행 순서 SQL 쿼리문을 작성할때 사용되는 WHERE, GROUP BY, ORDER BY 절과 같은 구문을 실행하는데 순서가 존재합니다. 이 순서에 의해서 쿼리가 처리되고 어떻게 쿼리문을 작성하느냐에 따

myjamong.tistory.com

 

728x90
반응형

'Database' 카테고리의 다른 글

[iBatis/myBatis] SELECT - INSERT를 할 때  (0) 2023.07.31
Database Link  (0) 2021.09.01
TRUNCATE / DELETE / DROP  (0) 2021.08.31

댓글