MySQL select 처리 순서

무지성개발자·2023년 10월 15일
0

예시

SELECT U.name, SUM(S.score) AS totalScore
FROM user U
INNER JOIN subject_scores S ON U.id = S.user_id
WHERE U.id IN (1,2,3,4,5)
GROUP BY U.id
HAVING totalScore > 300
ORDER BY totalScore DESC
LIMIT 2;

위 쿼리는 1~5번 학생의 과목 점수를 모두 합쳐서 300점이 넘는 학생 중 총 점이 높은 2명을 뽑는 쿼리다.

  • Select 절 : SELECT U.name, SUM(S.score) AS totalScore
  • FROM 절 : FROM user U INNER JOIN subject_scores S ON U.id = S.user_id
  • WHERE 절 : WHERE U.id IN (1,2,3,4,5)
  • GROUP BY 절 : GROUP BY U.id
  • HAVING 절 : totalScore > 300
  • ORDER BY 절 : ORDER BY totalScore DESC
  • LIMIT 절 : LIMIT 2

실행순서

  • FROM : 어느 테이블에 접근해야하는지 정함.(JOIN 포함)
  • WHERE : 일치하는 데이터만 접근.
  • GROUP BY : 읽어온 데이터를 그룹화.
  • HAVING : 그룹화 된 후 필터링.
  • 윈도우 함수 : COUNT(), SUM(), AVG() 같은 함수들.
  • SELECT : 정제된 데이터에서 어떤 컬럼을 출력할지 선택.
  • ORDER BY : 정렬 기준과 순서 선택.
  • LIMIT : 총 row에서 몇 row를 보여줄 지 선택.

한 줄평 : 쿼리 구문 순서 그대로 실행 할 줄 알았는데 먼저 데이터를 정제하고 어떤 컬럼을 보여줄 지 선택하는 순서였다.

profile
no-intelli 개발자 입니다. 그래도 intellij는 씁니다.

0개의 댓글