- 쿼리문을 작성할 때 사용되는 절들은 실행하는데 순서가 존재
- 쿼리 실행 순서를 이해하면 적절한 필터링을 이용해 조회되는 레코드의 수를 줄이면 쿼리의 성능 향상 도모할 수 있으며, 쿼리의 성능이 낭비되는 부분을 찾아 튜님 가능
실행 순서
- FROM 절
테이블의 모든 데이터를 획득
- WHERE 절
FROM 절에서 읽어 들인 데이터 중 조건에 일치하는 데이터 추출
- GROUP BY 절
WHERE 절에서 읽어 들인 데이터를 그룹화
- HAVING 절
GROUP BY 절에서 읽어 들인 데이터 중 조건에 일치하는 데이터만 추출
- SELECT 절
읽어 들인 데이터에서 출력할 열을 선택
- ORDER BY 절
레코드의 출력 순서 정렬
- LIMIT 절
출력할 레코드의 수 제한
예시
-- 입사일이 2000년 이후인 사원을
-- 이름, 생일 오름차순으로 정렬해서 조회
SELECT *
FROM employees
WHERE
hire_at >= '2000-01-01'
ORDER BY NAME ASC, birth ASC
;

-- 근무 중인 여자 사원을 이름, 생일 오름차순으로 정렬
SELECT *
FROM employees
WHERE
gender = 'F'
AND fire_at IS null
ORDER BY NAME ASC, birth ASC
;

-- 재직 중인 성별 사원수를 조회해 주세요.
SELECT
gender
,COUNT(gender) count_gender
FROM employees
WHERE
fire_at IS NULL
GROUP BY gender
;

-- 현재 받고 있는 급여 중 사원의 연봉 상위 5명 조회
SELECT *
FROM salaries
WHERE
end_at IS NULL
ORDER BY salary DESC
LIMIT 5
;
