Database: MySQL(2)

Ohback·2025년 1월 2일

MySQL 2일차, 오늘은 쿼리 명령어의 작성 및 실행 순서와 서브쿼리에 대하여 정리해 보았다.


1. 쿼리 명령어 작성 및 실행 순서

1-1.작성 순서

SELECT(DISTINCT) → FROM → JOIN → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT

1-2. 실행 순서

FROM → WHERE → JOIN → GROUP BY → HAVING → SELECT(DISTINCT) → WITH ROLLUP → ORDER BY → LIMIT

2. JOIN

JOIN은 두개 이상의 테이블을 관련 있는 컬럼을 통해 결합하는데 사용된다. 두개 이상의 테이블은 반드시 연관 있는 컬럼이 존재해야 하며 이를 통해 JOIN된 테이블들의 컬럼을 모두 활용할 수 있다.

  • INNER JOIN: 두 테이블에서 일치하는 데이터만 반환.
  • LEFT JOIN (LEFT OUTER JOIN): 왼쪽 테이블의 모든 행을 반환, 오른쪽 테이블에서 일치하는 값이 없으면 NULL.
  • RIGHT JOIN (RIGHT OUTER JOIN): 오른쪽 테이블의 모든 행을 반환, 왼쪽 테이블에서 일치하는 값이 없으면 NULL.
  • FULL OUTER JOIN: 두 테이블의 모든 행을 반환, 일치하지 않는 값은 NULL.

3. Subquery

서브쿼리는 쿼리 내에서 결과를 참조하거나, 데이터를 필터링하는 데 유용하여 데이터의 조건을 세밀하게 조정하거나, 복잡한 계산을 수행할 수 있다. 주의사항은 서브쿼리는 임시테이블 같은 역할을 하므로 별칭을 꼭 주어야한다. 새로운 테이블이 생긴 것은 아님. 아래는 서브쿼리를 사용한 예시문.

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;
profile
기록은 기억을 지배한다.

0개의 댓글