반응형
9주차 SQL 수업
데이터베이스 작업에서 MySQL의 다양한 쿼리 문법을 이해하는 것은 필수적이다.
이번 포스팅에서는 MySQL의 중요한 문법인 GROUP BY, HAVING, 다양한 JOIN 종류,
그리고 Subquery에 대해 개념과 예제를 소개한다.
1. GROUP BY
GROUP BY는 테이블의 데이터를 특정 열을 기준으로 그룹화할 때 사용된다.
주로 집계 함수(예: SUM, COUNT, AVG)와 함께 사용됩니다.
SELECT 열1, 집계함수(열2)
FROM 테이블명
GROUP BY 열1;
SELECT city, COUNT(*) AS total_customers
FROM customers
GROUP BY city;
2. HAVING
HAVING은 GROUP BY로 그룹화된 데이터에 조건을 적용할 때 사용된다.
WHERE와의 차이점은 HAVING이 집계된 결과에 필터를 적용한다.
SELECT 열1, 집계함수(열2)
FROM 테이블명
GROUP BY 열1
HAVING 집계함수(열2) 조건;
SELECT city, COUNT(*) AS total_customers
FROM customers
GROUP BY city
HAVING COUNT(*) > 10;
3. JOIN: 테이블 간 데이터 결합
JOIN은 여러 테이블에서 데이터를 결합하여 원하는 결과를 가져올 때 사용한다.
(1) INNER JOIN
두 테이블의 공통된 값을 가진 행만 반환한다.
SELECT A.열1, B.열2
FROM 테이블A A
INNER JOIN 테이블B B ON A.공통열 = B.공통열;
SELECT customers.name, orders.order_id
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;
(2) OUTER JOIN
하나의 테이블에 있는 모든 행을 반환하며, 다른 테이블에 매칭되는 값이 없으면 NULL로 채웁니다.
LEFT OUTER JOIN (LEFT JOIN) 예제
SELECT customers.name, orders.order_id
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;
4. Subquery (서브쿼리)
서브쿼리는 쿼리 안에 포함된 또 다른 쿼리입니다. 주로 SELECT, INSERT, UPDATE, DELETE 쿼리 내에서 사용됩니다.
(1) SELECT문 안의 Subquery
SELECT name, (SELECT COUNT(*) FROM orders WHERE orders.customer_id = customers.customer_id) AS order_count
FROM customers;
(2) WHERE절에 사용된 Subquery
SELECT name
FROM customers
WHERE customer_id IN (SELECT customer_id FROM orders WHERE total_amount > 100);
반응형