Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[MySQL] - JOIN (INNER JOIN) 본문

DB/MySQL

[MySQL] - JOIN (INNER JOIN)

luke-king 2024. 5. 10. 19:46

 

 

 

 

 

[MySQL] - JOIN (Inner JOIN)

DB부분에 부족함이 많다 느껴 이번 시간에는 sql join에 대해 공부한 내용을 정리해보려 한다.

 

 

JOIN 이란?

  • 조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어내는 것을 말한다.
  • INNER JOIN(내부 조인) : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.
  • OUTER JOIN(외부 조인) : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.
  • CROSS JOIN(상호 조인) : 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다.
  • SELF JOIN(자체 조인) : 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다.

이렇게 총 4가지의 종류 JOIN이 있다.

 

 

 

이번 시간에는 INNER JOIN (내부 조인)에 대해 정리해보려고 한다.

 

 


 

INNER JOIN(내부 조인)

 

 

INNER JOIN은 위에 설명한듯이 두 테이블을 조인할 때 지정한 열의 데이터가 필요하다.

그래서 결과값은 위 그림과 같이 교집합인 값들(지정한 공통칼럼 값)을 추출한다.

바로 예시를 봐보겠다.

 

<a_table>

a_table

 

<b_table>

b_table

 

위 두개의 a, b 테이블이 있다 각각의 칼럼에 값이 있는 것을 확인할 수 있다.

이 두 테이블을 INNER JOIN을 하게 된다면 앞에서 언급했던 두 테이블의 관계를 연결해 주는 연결고리가 필요하다.

그래야 연결을 할 수 있기 때문이다. 그럼 두 테이블을 봤을때 공통적으로 들어 있는 칼럼은 id칼럼이다.

그럼 쿼리문 작성 한 뒤 결괏값이 어떻게 나오는지 보겠다.

 

<쿼리문>

select * from a_table 
inner join b_table on a_table.id = b_table.id
order by a_table.id asc;

select * from 1테이블명
inner join 2테이블명 on a_table.id(공통컬럼 값) = b_table.id(공통컬럼 값)
order by a_table.id asc;

 

 

<결과>

a_table, b_table JOIN 결과

결과를 보면 a_table, b_table의 교집합인 (id) 값들만 출력하는 걸 볼 수 있다.

a_table에서는 id값이 7까지 있지만 b_table 에는 5까지만 있으므로 id칼럼의 값이 중복되는 건 1~5 인 값들만

보여준다.