[SQL] INNER JOIN 개념 / 장단점 /사용법 예제

정리해둬야 기억에 오래남는 SQL
inner join 에 대해 개념만 알고 넘어갔더니 설명을 못하겠더라고요!
sqld 시험 대비 겸 정리해두겠습니다
✔ 개념
INNER JOIN 이란?
INNER JOIN 은 SQL 에서 자주 사용하는 JOIN 중 하나입니다. 두개 이상의 테이블에서 공통된 값을 기준으로 행을 결합하는데 사용합니다. INNER JOIN 을 사용하면 연관된 열의 값을 가지는 행만 결과에 포합됩니다.
다시말하면, INNER JOIN 은 두 테이블에 공통적으로 존재하는 데이터여야 출력됩니다.
JOIN 의 관계는 1:N, 1:1, N:1 모두 될 수 있습니다.
✔ 사용방법
고객 테이블과 주문 테이블이 있습니다.
두 테이블에 inner join 을 걸어볼게요!
customers 테이블

orders 테이블

inner join 사용 예제
SELECT A.customer_id, A.customer_name, B.order_id, B.order_total
FROM CUSTOMERS A
INNER JOIN ORDERS B ON A.customer_id = B.customer_id;
Customers 테이블에 alias A 를 주고 Orders 테이블에 alias B 를 줍니다.
조인 조건 A.customer_id = B.customer_id 는 Customers 테이블의 customer_id 와 Orders 테이블의 customer_id 열이 동일한 값을 가지는 행들만 선택하는 역할을 합니다.
따라서 위의 쿼리는 고객 테이블과 주문 테이블에 모두 존재하는 고객 id, 고객이름, 주문 id, 주문 금액이 결과로 선택됩니다.
조인 결과

customers 테이블의 customer_id 에 있는 값인 1,2,3 에 대한 정보만 출력하는걸 확인할 수 있습니다.
INNER JOIN 에 조건 추가
Inner join 다음에 where 절을 추가해서 조건을 줄 수 있어요
아래의 예제로 확인해볼게요!
주문 이력이 있는 고객 중 주문 금액이 80 이상인 고객의 id, 이름, 주문 id, 주문 금액을 정보 조회하기
SELECT A.customer_id, A.customer_name, B.order_id, B.order_total
FROM CUSTOMERS A
INNER JOIN ORDERS B ON A.customer_id = B.customer_id
WHERE B.order_total > 80;
결과

✔ 장단점
장점
데이터 정합성 유지 : INNER JOIN 을 사용하면 관련된 column(열)의 값이 일치하는 행들만 결합됩니다. 따라서 연관된 데이터만 가져와서 불필요한 정보를 필터링 할 수 있습니다.
유연한 데이터 검색: 여러 테이블 간의 관계를 활용하여 유연한 데이터 검색을 수행할 수 있습니다. 관련된 테이블 간의 데이터를 결합하고 필요한 열을 선택하여 쿼리 결과를 생성할 수 있습니다.
단점
성능 문제 : 두개 이상의 테이블을 결합하므로 데이터 양이 많으면 성능에 영향을 줄 수 있습니다.
복잡한 쿼리 작성 : INNER JOIN 은 여러 테이블 간의 관계를 고려하여 쿼리를 작성해야하므로 복잡성이 증가 될 수 있습니다.
데이터 중복 : 일치하는 행이 결합되기 때문에 결과 집합에 중복된 데이터가 포함 될 수 있습니다. (중복 데이터 제거를 위해 DISTINCT 사용)
✔참고
https://www.youtube.com/watch?v=D81QWILZTTE SQL 전문가 정미나님 유튜브
http://sqlfiddle.com/#!9/2d41f0/12 SQL 테스트 사이트