MySQL

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

jiyoon12 2025. 5. 19. 00:13
  • 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) 결과를 반환한다.
      • 페이지네이션이나 특정 결과만 필요할 때 유용하다.
  1.