
SELECT(DISTINCT) → FROM → JOIN → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT
FROM → WHERE → JOIN → GROUP BY → HAVING → SELECT(DISTINCT) → WITH ROLLUP → ORDER BY → LIMIT
JOIN은 두개 이상의 테이블을 관련 있는 컬럼을 통해 결합하는데 사용된다. 두개 이상의 테이블은 반드시 연관 있는 컬럼이 존재해야 하며 이를 통해 JOIN된 테이블들의 컬럼을 모두 활용할 수 있다.
서브쿼리는 쿼리 내에서 결과를 참조하거나, 데이터를 필터링하는 데 유용하여 데이터의 조건을 세밀하게 조정하거나, 복잡한 계산을 수행할 수 있다. 주의사항은 서브쿼리는 임시테이블 같은 역할을 하므로 별칭을 꼭 주어야한다. 새로운 테이블이 생긴 것은 아님. 아래는 서브쿼리를 사용한 예시문.
SELECT
category_code, COUNT(*) AS count
FROM
(SELECT category_code FROM tbl_menu WHERE price > 100) AS filtered_menu
GROUP BY category_code;
SELECT
category_code,
(SELECT COUNT(*)
FROM tbl_menu
WHERE tbl_menu.category_code = outer_tbl.category_code) AS count
FROM
(SELECT DISTINCT category_code FROM tbl_menu) AS outer_tbl
WHERE
(SELECT COUNT(*)
FROM tbl_menu
WHERE tbl_menu.category_code = outer_tbl.category_code) >= 5;