-
SQL JOIN: 테이블 간의 데이터 연결, 쉽게 이해하기🐬 MySQL/MySQL 키워드 2024. 12. 2. 21:08728x90
2024.12.02 - [데이터베이스/MySQL 키워드] - SQL JOIN: 테이블 간의 데이터 연결, 쉽게 이해하기
SQL의 중요한 기능 중 하나인 JOIN에 대해 알아보겠습니다.
JOIN은 마치 퍼즐 조각을 맞추는 것처럼 여러 테이블의 데이터를 연결해주는 마법 같은 기능입니다.
JOIN이란 무엇일까요?JOIN은 두 개 이상의 테이블에서 관련된 데이터를 한 번에 조회할 수 있게 해주는 SQL의 기능입니다.
예를 들어, '주문' 테이블과 '고객' 테이블이 있다고 생각해봅시다.
JOIN을 사용하면 주문 정보와 그 주문을 한 고객의 정보를 동시에 볼 수 있습니다.
JOIN은 왜 필요할까요?- 데이터베이스에서는 정보를 여러 테이블로 나누어 저장합니다.
- 테이블을 나누어 저장 하는 이유 : 중복된 데이터로 인한 저장공간 낭비가 없습니다.
- 나누어진 정보를 한번에 볼 수 있고 취합하기 편하다.
예) 회원의 이메일을 수정하려고 할 경우
- 중복된 데이터가 많아 모든 데이터를 찾아수정해야 하는 번거로움이 줄어든다
- 테이블을 구분하여 저장 할 경우 회원정보의 데이터만 변환하면 되고, 오류 발생율도 줄어든다.
JOIN의 종류INNER JOIN 가장 많이 사용되는 JOIN입니다. 두 테이블에서 매칭되는 데이터만 가져옵니다. LEFT JOIN 왼쪽 테이블의 모든 데이터와 오른쪽 테이블에서 매칭되는 데이터를 가져옵니다. RIGHT JOIN LEFT JOIN의 반대로, 오른쪽 테이블의 모든 데이터를 기준으로 합니다. FULL OUTER JOIN 양쪽 테이블의 모든 데이터를 가져옵니다. JOIN을 설정 방법
JOIN의 기본구문
JOIN 을 사용할 경우 무조건 ON 이 들어가야 하며, FROM 옆에 시작한다.
SELECT * FROM customers c join orders o on c.id=o.customer_id;
위와 같이 할 경우
customer(회원정보) 와 orders(주문정보) 의 고유 ID가 중복되는 내용조회된다
(null 값이 있는 경우 표시되지 않는다.)
SELECT * FROM customers c left join orders o on c.id=o.customer_id;
위와 같이 할 경우
customer(회원정보) 와 orders(주문정보) 의 고유 ID가 중복되는 내용조회된다
(null 값이 있는 경우에도 표시 된다.)
JOIN 실제 사용사례
이 쿼리는 주문 정보와 함께 그 주문을 한 고객의 이름을 보여줍니다. 마치 두 개의 퍼즐 조각을 '고객ID'라는 연결 고리로 맞춘 것과 같습니다.
'주문' 테이블과 '고객' 테이블이 JOIN 되는것을 예로 들어보겠습니다.
쿠팡과 같은 온라인 쇼핑몰의 경우 회원이 구매정보를 클릭 했을때 회원정보와 구매정보가 JOIN 되면서 고객의 구매정보를 불러옵니다.
고객 주문 분석 : 고객 정보와 주문 정보를 결합하여 구매 패턴을 분석합니다.
재고 관리 : 제품 테이블과 재고 테이블을 JOIN하여 현재 재고 상태를 파악합니다.
직원 성과 평가 : 직원 테이블과 판매 실적 테이블을 JOIN하여 개인별 성과를 분석합니다.
복잡한 보고서 생성 : 여러 테이블의 데이터를 결합하여 종합적인 비즈니스 보고서를 작성합니다.
데이터 웨어하우징 : 여러 소스의 데이터를 통합할 때 JOIN을 사용하여 관련 정보를 연결합니다.JOIN 연습 쿼리
퍼스트 네임이 'Cobby'인 사람의 주문 내역을 가져오세요 SELECT * FROM customers c left join orders o on c.id=o.customer_id where c.first_name like 'cobby';
주문금액이 300달러 이상이고, 500달러 이하인 주문 내역을 가져오세요 단, 주문한 사람의 이메일도 같이 나와야 한다 SELECT o.*,c.email FROM orders o join customers c on o.customer_id = c.id WHERE amount BETWEEN 300 and 500;
각 고객별로 주문 금액 평균이 300달러 이상인 테이터만 가져오시오 고객의 이메일 주소도 같이 나오도록 해주세요 - 이해완료 SELECT c.*, avg(o.amount)as amount_avg FROM customers c join orders o on c.id=o.customer_id group by c.id having amount_avg>= 300 order by amount_avg
728x90'🐬 MySQL > MySQL 키워드' 카테고리의 다른 글
SQL JOIN : 에서 3개 이상 테이블 고객, 주문, 상품 데이터 통합하기" (0) 2024.12.03 SQL CASE 문 마스터하기 : 강력한 조건부 표현식 (0) 2024.12.01 SQL LIKE로 데이터 찾기 : SQL 문자열 검색의 핵심 (0) 2024.12.01 SQL LIMIT : 효율적인 데이터 검색의 열쇠 (0) 2024.12.01 DISTINCT 키워드 마스터하기 : SQL에서 유니크한 값만 추출하기 (0) 2024.12.01