SQL

<My SQL> JOIN의 종류 설명 및 사용법 & 예제

제이미로그 2024. 6. 24. 11:28

📌 1. 조인 (JOIN) 이란?

두개이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법이다. 자신이 검색하고 싶은 컬럼이 다른 테이블에 있을 경우 주로 사용하며 여러 개의 테이블을 마치 하나의 테이블인 것처럼 활용하는 방법이다. 보통 Primary key 혹은 Foreign key로 두 테이블을 연결한다. 테이블을 연결하려면 하나의 칼럼은 서로 공유되고 있어야 한다. 고등학교 수학 시간 때 배웠던 벤다이어그램을 활용하면 쉽게 이해할 수 있다. 

 

📌 2. INNER JOIN (내부조인)

 

쉽게 말해 교집합이다. 기준 테이블과 JOIN한 테이블의 중복된 값을 보여준다. 결과값은 A의 테이블과 B테이블이 모두 가지고 있는 데이터만 검색된다.  두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. 

 

select <열 목록> 

                                        from < 첫 번째 테이블>

                                             inner join < 두 번째 테이블>

                                             on <조인 조건>

                                        [where 검색 조건]

 

예시 > select *

           from customer c LEFT JOIN order_list o 

           on c.id=o.id;

 

📌 3. OUTER JOIN (외부조인)

 

Full Outer Join : 왼쪽, 오른쪽 테이블의 모든 값이 출력되는 조인

 

select *

from A a

     full outer join B b

     on a.key = b.key

 

 

select *

from A a

      full outer join B b

      on a.key = b.key

where a.key is null

                                                  or b.key is null

 

Left Outer Join : 왼쪽 테이블의 모든 값이 출력되는 조인

 

select *

from A a

   left join B b 

   on a.key = b.key

 

select *

from A a

   left join B b 

where b.key is null

 

 

Right Outer Join :오른쪽 테이블의 모든 값이 출력되는 조인

 

select *

from A a

   right outer join B b

   on a.key = b.key

 

 

select *

from A a

   right outer join B b

where a.key is null

 

 

📌 4. CROSS JOIN (상호조인)

한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능이다. 상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수만큼 된다. 카티션 곱(Cartesian Product)라고 한다. 

 

select *

from <첫 번째 테이블>

         cross join <두 번째 테이블>

 

📌 5. SELF JOIN (자체조인)

 

자체 조인은 자기 자신과 조인하므로 1개의 테이블을 사용한다. 별도의 문법이 있는 것은 아니고 1개로 조인하면 자체 조인이 된다. 

 

select  <열 목록>

from <테이블> 별칭 A

                                              inner join <테이블> 별칭 B

                                        [where 검색 조건]

 

 

 

 

'SQL' 카테고리의 다른 글

<My SQL> 식별관계와 비식별관계 이해 : 데이터모델링  (0) 2024.06.19