기록이 힘이다.

[혼공 SQL] 두 테이블을 묶는 조인 본문

SQL

[혼공 SQL] 두 테이블을 묶는 조인

dev22 2022. 12. 13. 10:55
728x90

조인(join)이란 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말합니다. 두 테이블을 엮어야만 원하는 형태가 나오는 경우도 많습니다. 

내부 조인

두 테이블을 연결할 때 가장 많이 사용되는 것이 내부 조인입니다. 그냥 조인이라 부르면 내부 조인을 의미하는 것입니다.

 

일대다 관계의 이해

두 테이블의 조인을 위해서는 테이블이 일대다(one to many) 관계로 연결되어야 합니다. 

 

일대다 관계란 한쪽 테이블에는 하나의 값만 존재해야 하지만, 연결된 다른 테이블에는 여러 개의 값이 존재할 수 있는 관계를 말합니다.

 

예를 들어, 회원 테이블에서 블랙핑크의 아이디는 'BLK'로 1명(1,one) 밖에 없습니다. 그래서 회원 테이블의 아이디를 기본 키(primary key, PK)로 지정했습니다. 구매 테이블의 아이디에서는 3개의 BLK를 찾을 수 있습니다. 즉, 회원은 1명이지만 이 회원은 구매를 여러 번 할 수 있는 것입니다. 그래서 구매 테이블의 아이디는 기본 키가 아닌 외래 키(Foreign Key, FK)로 설정했습니다.

 

내부 조인의 기본

일반적으로 조인이라고 부르는 것은 내부 조인(inner join)을 말하는 것으로, 조인 중에서 가장 많이 사용됩니다. 조인은 3개 이상의 테이블로도 할 수 있지만 대부분은 2개로 조인하므로 2개에 대해서만 언급하겠습니다.

 

SELECT <열 목록>
FROM < 첫 번째 테이블>
            INNER JOIN <두 번째 테이블> --> 그냥 JOIN으로 써도 인식됨.
            ON <조인될 조건>
[WHERE 검색 조건]

내부 조인하는 SQL 과정

내부 조인의 활용

구매이력이 한번이라도 있는 회원 --> DISTINCT

양쪽 중에 한곳이라도 내용이 있을 때 조인하려면 외부 조인을 사용해야 합니다. 내부 조인은 두 테이블에 모두 있는 내용만 출력됩니다. 

 

외부 조인

외부 조인의 기본

한쪽에만 데이터가 있어도 결과가 나옵니다.

SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
            <LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
           ON <조인될 조건>
[WHERE 검색 조건] ;

외부 조인의 활용

회원가입을 하고 구매이력이 없는 고객

기타 조인

상호 조인

한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능.

결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 개

- ON 구문을 사용할 수 없습니다.

-결과의 내용은 의미가 없습니다. 랜덤으로 조인하기 때문입니다.

-상호 조인의 주 용도는 테스트하기 위해 대용량의 데이터를 생성할 때입니다.

 

자체 조인

자신이 자신과 조인한다는 의미입니다. 그래서 자체 조인은 1개의 테이블을 사용합니다. 

SELECT <열 목록>
FROM <테이블> 별칭A
         INNER JOIN <테이블> 별칭B
         ON <조인될 조건>
[WHERE 검색 조건]