이번 블로그 글에서는 SQL 실습 4주차의 핵심 내용을 정리하여, SQL의 다양한 기능과 쿼리 작성법을 보다 깊이 있게 이해할 수 있도록 도와드리겠습니다. SQL은 데이터베이스와의 상호작용을 위한 언어로, 데이터를 조회하고 조작하는 데 매우 유용합니다.
특히, 이번 주차에서는 JOIN과 SUBQUERY를 이용한 데이터 조회 방법에 대해 집중적으로 다루게 됩니다.
SQL의 JOIN
SQL에서 JOIN은 두 개 이상의 테이블을 연결하여, 하나의 테이블처럼 데이터를 조회할 수 있도록 하는 기능입니다. JOIN의 종류에는 INNER JOIN과 LEFT JOIN이 있으며, 각기 다른 상황에 따라 사용됩니다.
INNER JOIN
INNER JOIN은 두 테이블에서 공통된 키 값을 기준으로 데이터를 조회합니다. 이때, 두 테이블에 모두 존재하는 데이터만 결과로 반환됩니다.
INNER JOIN을 사용하면, 두 테이블에서 연관된 데이터만을 가져올 수 있어, 데이터의 일관성을 유지할 수 있습니다. 예를 들어, 주문 테이블과 고객 테이블이 있다고 가정해 보겠습니다.
고객이 주문한 내역을 조회할 때, 고객의 정보가 포함된 결과를 얻기 위해 INNER JOIN을 사용할 수 있습니다. 다음은 INNER JOIN의 예시 코드입니다.
SELECT f.order_id, c.customer_id, f.restaurant_name, f.price
FROM food_orders f
INNER JOIN customers c ON f.customer_id = c.customer_id;
위 코드에서는 food_orders
테이블과 customers
테이블을 customer_id
를 기준으로 INNER JOIN 하여, 주문 번호, 고객 ID, 식당 이름, 가격 정보를 조회하고 있습니다.
LEFT JOIN
LEFT JOIN은 왼쪽 테이블에 있는 모든 데이터를 포함하고, 오른쪽 테이블에 있는 데이터는 공통된 키 값이 있을 경우에만 가져옵니다. LEFT JOIN을 사용하면, 왼쪽 테이블의 모든 데이터가 결과에 포함되므로, 오른쪽 테이블에 해당하는 데이터가 없더라도 NULL 값으로 나타납니다.
예를 들어, 고객 테이블의 모든 고객 정보를 포함하면서, 해당 고객이 주문한 내역이 없는 경우에도 고객 정보를 유지하고 싶다면 LEFT JOIN을 사용할 수 있습니다. 다음은 LEFT JOIN의 예시 코드입니다.
SELECT f.order_id, c.customer_id, f.restaurant_name, f.price, c.name
FROM food_orders f
LEFT JOIN customers c ON f.customer_id = c.customer_id;
위의 쿼리에서는 food_orders
테이블과 customers
테이블을 LEFT JOIN 하여, 모든 주문 내역과 그에 해당하는 고객 정보를 조회합니다. 만약 주문한 사람들이 없더라도 고객 테이블에서의 정보는 그대로 유지됩니다.
JOIN 활용의 중요성
JOIN을 적절히 활용하는 것은 복잡한 데이터 구조를 간단하게 알아보고, 필요한 정보를 효율적으로 추출하는 데 매우 중요합니다. 여러 테이블에서 필요한 데이터를 조합하여 원하는 결과를 얻는 과정은 데이터 분석 및 보고서 작성에 있어 핵심적인 요소라 할 수 있습니다.
아래는 JOIN의 종류와 특징을 정리한 표입니다.
JOIN 종류 | 설명 | 반환되는 데이터 |
---|---|---|
INNER JOIN | 두 테이블의 공통된 데이터만 반환 | 두 테이블 모두에 존재하는 데이터 |
LEFT JOIN | 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 일치 데이터 | 왼쪽 테이블의 모든 데이터 + NULL |
SUBQUERY의 활용
SUBQUERY는 쿼리 안에 포함된 쿼리로, 하위 쿼리의 결과를 상위 쿼리에서 활용하는 방식입니다. SUBQUERY를 활용하면, 복잡한 계산이나 필터링을 한 번에 처리할 수 있어 쿼리의 가독성을 높이고, 성능을 향상시킬 수 있습니다.
SUBQUERY의 기본 구조
SUBQUERY는 SELECT 문 안에 포함될 수 있으며, FROM 문, WHERE 문 등 다양한 위치에 삽입할 수 있습니다. 이러한 구조는 SQL 쿼리를 작성할 때 매우 유용합니다.
다음은 SUBQUERY의 예시입니다.
SELECT order_id, restaurant_name, food_over
FROM (
SELECT order_id, restaurant_name,
food_preparation_time - 25 AS food_over
FROM food_orders
) a
WHERE food_over >= 0;
위 쿼리에서는 하위 쿼리에서 음식 준비 시간이 25분을 초과하는 주문 정보를 계산한 후, 상위 쿼리에서 그 결과를 가져와서 food_over
가 0 이상인 경우만 필터링하여 조회합니다. 이렇게 하면 불필요한 데이터는 제외하고, 필요한 정보만을 효율적으로 얻을 수 있습니다.
SUBQUERY 활용의 장점
SUBQUERY의 가장 큰 장점은 복잡한 데이터를 단순화하여 처리할 수 있다는 것입니다. 예를 들어, 여러 번의 연산이 필요한 경우, 각각의 연산을 하위 쿼리로 나누어 처리하면 보다 직관적으로 쿼리를 작성할 수 있습니다.
또한, SUBQUERY를 사용하여 특정 조건에 따라 결과를 필터링하거나 집계할 수 있습니다. 아래는 SUBQUERY의 활용 예시를 정리한 표입니다.
활용 분야 | 설명 | 예시 쿼리 |
---|---|---|
FROM 문에 SUBQUERY 활용 | 서브쿼리 결과를 테이블처럼 사용 | SELECT order_id, restaurant_name FROM (SELECT ...) a |
WHERE 문에 SUBQUERY 활용 | 조건으로 서브쿼리 결과 사용 | SELECT * FROM orders WHERE id IN (SELECT id FROM ...) |
계산된 결과 사용 | 하위 쿼리에서 계산 후 사용 | SELECT order_id, (SELECT COUNT(*) FROM ...) AS total_count |
결론
이번 4주차 실습에서는 SQL의 JOIN과 SUBQUERY에 대해 자세히 알아보았습니다. JOIN을 통해 여러 테이블에서 데이터를 연결하여 원하는 정보를 효율적으로 조회할 수 있으며, SUBQUERY를 활용하면 복잡한 연산이나 필터링을 간결하게 처리할 수 있습니다.
이러한 기술들은 데이터 분석 및 데이터베이스 관리에 있어 필수적인 요소로, 실제 업무에서도 매우 유용하게 사용됩니다. SQL을 통해 데이터를 보다 정교하게 다루고, 필요한 정보를 효과적으로 추출하는 방법을 연습하는 것이 필요합니다.
이를 위해 다양한 실습 문제를 풀어보며 경험을 쌓는 것이 좋습니다. SQL의 다양한 기능을 익히고 활용하는 데 있어, 실전 경험이 큰 도움이 될 것입니다.
앞으로도 SQL에 대한 이해를 높이고, 데이터 분석 능력을 향상시키기 위해 꾸준히 학습해 나가시길 바랍니다.
관련 영상
같이보면 좋은 글
미국 주식 양도소득세 절세 전략 핵심 체크리스트
미국 주식에 투자하시는 분들이라면 양도소득세와 그에 따른 절세 전략에 대해 충분히 알아보고 계셔야 합니다. 많은 투자자들이 주식 거래로 얻은 수익에 대한 세금을 간과하거나 잘못 이해하
myinforaid.tistory.com
죽은 아내 꿈 해몽 15가지 정리
꿈은 우리의 무의식이 드러나는 공간으로, 개인의 감정, 경험, 심리적 상태를 반영합니다. 특히, 사랑하는 사람을 잃은 후 꿈속에 그 사람의 모습이 나타나는 경우가 많습니다. 특히 죽은 아내
myinforaid.tistory.com
2025년 국세청 장애인 증명서 발급법 정리
장애인 증명서는 장애인으로 등록된 분들이 다양한 복지 혜택과 세금 감면을 받기 위해 필수적인 서류입니다. 특히, 국세청에서 발급받는 장애인 증명서는 세금 신고와 복지 서비스 신청 시 매
myinforaid.tistory.com