Computer Science/Database

[MySQL] 조인 (JOIN) 사용법

2021. 2. 9. 13:09

RDBMS(관계형 DBMS)에서는 모든 데이터가 테이블에 저장되고, 테이블 간의 관계가 형성된다. 이러한 테이블 간의 관계를 활용하여 정보를 얻을 수 있는 JOIN 구문의 사용법에 대해 알아보고자 한다.

1. 내부 조인 (INNER JOIN)

두  개 이상의 테이블의 교집합에서 데이터를 확인하고자 할 때 사용할 수 있다. 가장 일반적인 JOIN문으로 SQL문에서 JOIN으로 써도 INNER JOIN으로 인식된다.

/* 테이블 2개 JOIN */
SELECT T1.id, T2.name, T1.address
	FROM table1 T1
    	INNER JOIN table2 T2
        	ON T1.id = T2.id -- JOIN 조건
    WHERE T1.id = 'person1';

/* 테이블 3개 JOIN */
SELECT T2.id, T1.name, T2.address
	FROM table1 T1
    	JOIN table2 T2
        	ON T1.id = T2.id
    	JOIN table3 T3
        	ON T2.address = T3.address
    ORDER BY T1.id;

 

2. 외부 조인 (OUTER JOIN)

두  개 이상의 테이블의 합집합에서 데이터를 확인하고자 할 때 사용할 수 있다.

/* LEFT OUTER JOIN, T1의 데이터는 모두 포함된다 */
SELECT T1.id, T2.name, T1.address
	FROM table1 T1
    	LEFT OUTER JOIN table2 T2 -- LEFT JOIN으로 적어도 됨
        	ON T1.id = T2.id
    WHERE T1.id = 'person1';

/* RIGHT OUTER JOIN, T2의 데이터는 모두 포함된다  */
SELECT T1.id, T2.name, T1.address
	FROM table1 T1
    	RIGHT OUTER JOIN table2 T2 -- RIGHT JOIN으로 적어도 됨
        	ON T1.id = T2.id
    WHERE T1.id = 'person1';
    
/* FULL OUTER JOIN, T1과 T2의 데이터가 모두 포함된다  */
SELECT T1.id, T2.name, T1.address
	FROM table1 T1
    	FULL OUTER JOIN table2 T2 -- FULL JOIN으로 적어도 됨
        	ON T1.id = T2.id
    WHERE T1.id = 'person1';

 

3. UNION

두 쿼리의 결과를 행으로 합쳐준다 (세로로 길게). 이때 열의 개수가 같고 열의 형식이 호환되어야 한다.

/* UNION: 중복된 열 제거, UNION ALL: 중복된 열 포함  */
SELECT * FROM table1
	UNION ALL
SELECT * FROM table2

 

※ 참고 (기본 키와 외래 키)

JOIN을 사용하기 위해서는 기본 키와 외래 키 관계가 선행되어 있어야 한다고 처음에 생각했는데, 오해였다. 기본 키와 외래 키의 존재 이유는 제약 조건을 통해서 데이터의 무결성(데이터에 오류가 없도록 함)을 확보하기 위함이다. 즉, 제약 조건과 JOIN은 직접적인 관계는 없고, JOIN을 할 때 기본 키와 외래 키로 설정된 열을 주로 사용할 뿐이다.

 

Reference

  • 우재남. 이것이 MySQL이다. 한빛미디어, 2016.
728x90
반응형