MySQL

SQL 쿼리의 일반적인 처리 순서

whs5758 2025. 5. 16. 17:42

SQL 쿼리 실행 순서

SQL 쿼리는 작성 순서와 실행 순서가 다릅니다. 아래는 쿼리가 실제로 처리되는 논리적 실행 순서입니다. 각 절의 역할과 처리 방식을 자세히 설명합니다.

  1. FROM 절
    • 쿼리의 첫 단계로, 데이터를 가져올 테이블(또는 뷰)을 지정합니다. 여러 테이블을 사용할 경우, 조인(JOIN)을 통해 결합 방식을 정의합니다. 이 단계에서 모든 행과 열을 포함하는 가상 테이블이 생성됩니다.
  2. ON 절
    • 조인(JOIN)이 사용될 때, 테이블 간 결합 조건을 정의합니다. 예를 들어, 두 테이블의 특정 열 값이 일치해야 결합되도록 조건을 설정합니다. 이 절은 조인된 행을 결정합니다.
  3. JOIN
    • FROM 절에서 지정된 테이블들을 ON 절의 조건에 따라 결합합니다. INNER JOIN, LEFT JOIN 등 조인 유형에 따라 결과 행이 달라집니다. 결과는 결합된 데이터를 포함하는 새로운 가상 테이블입니다.
  4. WHERE 절
    • FROM과 JOIN으로 생성된 가상 테이블에서 조건에 맞는 행만 필터링합니다. 각 행에 대해 조건(예: price > 20000)을 평가하여 참인 행만 다음 단계로 넘어갑니다.
  5. GROUP BY 절
    • 필터링된 행을 특정 열(또는 열 조합)을 기준으로 그룹화합니다. 주로 SUM, COUNT 같은 집계 함수와 함께 사용되어 각 그룹의 요약 정보를 생성합니다.
  6. HAVING 절
    • GROUP BY로 생성된 그룹에 조건을 적용합니다. WHERE가 개별 행을 필터링한다면, HAVING은 그룹 단위로 필터링합니다(예: SUM(sales) > 1000).
  7. SELECT 절
    • 최종 출력할 열, 계산된 값, 또는 집계 함수를 지정합니다. 이 단계에서 열 이름, 별칭, 수식 등이 처리되어 결과의 구조가 결정됩니다.
  8. DISTINCT
    • SELECT 결과에서 중복된 행을 제거합니다. 선택된 열 기준으로 고유한 행만 반환하며, 이 단계는 선택적으로 사용됩니다.
  9. ORDER BY 절
    • 최종 결과를 특정 열을 기준으로 정렬합니다. 오름차순(ASC) 또는 내림차순(DESC)으로 설정할 수 있으며, 출력 순서를 결정합니다.
  10. LIMIT / OFFSET 절
    • 반환할 행의 수를 제한(LIMIT)하거나, 지정된 수의 행을 건너뛰고(OFFSET) 결과를 반환합니다. 페이지네이션이나 특정 결과만 필요할 때 유용합니다.

'MySQL' 카테고리의 다른 글

GROUP BY 와 HAVING 절  (0) 2025.05.16
MySQL ANSI SQL 표준과 주요 함수  (0) 2025.05.16
테이블 복사 및 데이터 추가  (0) 2025.05.16
트랜잭션 이란 & (COMMIT, ROLLBACK)  (0) 2025.05.16
MySQL 별칭, 변수 선언, IF 문  (0) 2025.05.15