본문 바로가기
✨ DBMS/MySQL

[MySQL / SQL] - JOIN 조인 (Cross , Equi , Self , Outer , Union )

by 환풍 2023. 7. 29.
728x90

 

위에는 EMP 테이블, SALGRADE 테이블, DEPT 테이블이 있다.

 

상호 조인 ( Cross Join) 이란?

 테이블들을 연결하여 연속적으로 기술하는 것이다.

컬럼 수는 EMP 컬럼수 + DEPT 컬럼수 + SALGRADE 컬럼수를 더한 것이되고,

행 수EMP 행 * DEPT 행 * SALGRADE 행이 된다.

조인될 때 아무런 조건을 제시하지 못했기 때문에 이 CROSS 조인은 아무런 의미가 없다.

따라서 조건을 사용하는 다양한 JOIN에 대해 더 알아보자.

 

Equi(Inner) Join 이란?

 동일 칼럼을 기준으로 조인. N개의 테이블 조인시 N-1개의 조인 조건이 필요하다.

공통적으로 존재하는 컬럼의 값이 일치되는 행을 연결하여 결과를 생성하는 조인 방법이다.

EQUI JOIN은 가장 많이 사용하는 조인 방법이니 잘 학습해두자.

INNER JOIN을 사용하여 조건절을 WHERE 대신 ON절을 사용해서 나타낼 수 있다.

가운데 그림처럼 USING ( 공통 COLUMN )을 사용해서도 나타낼 수 있다.

*using절에서는 table이름이나 alias를 명시하면 에러난다.

오른쪽 그림처럼 INNER JOIN을 콤마( , )로 변경하고 WHERE로 바꿔서도 나타내도 똑같은 결과를 나타낸다.

 

join 조건 -> On

일반 조건 -> Where

 

Non - Equi Join 이란?

 동일 칼럼 없이 다른 조건을 사용해 조인.

일반적인 조인 조건인 등호(=)가 아닌 다른 비교 연산자(>, <, >=, <=, <>)를 사용하여 두 테이블을 조인하는 방법.

위와 같이 == 기호가 아닌, BETWEEN A AND B 연산자를 이용하여 범위를 나타낸 것이다.

이것이 바로 Non - EquiJoin 이라고 부른다.

 

Self Join 이란?

 한 테이블 내에서 조인. 즉, 자기 자신과 조인을 맺는 것.

 

Outer Join 이란?

 조인 조건에 만족하지 않는 행도 나타냄.

두 테이블 사이에서 일치하는 값 뿐만 아니라

한쪽 테이블에는 있는데 다른 쪽 테이블에는 없는 값을 포함하여 결과를 반환하는 방법이다.

 

LEFT OUTER JOIN: 왼쪽 테이블의 모든 행을 포함하고, 오른쪽 테이블과 일치하는 값이 있으면 포함
RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 포함하고, 왼쪽 테이블과 일치하는 값이 있으면 포함
FULL OUTER JOIN: 양쪽 테이블의 모든 행을 포함하고, 일치하는 값이 있으면 포함

 

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE DEPT01(
    DEPTNO INT(20),
    DNAME VARCHAR(20)
);
INSERT INTO DEPT01 VALUES(10'QBCDF');
INSERT INTO DEPT01 VALUES(30'BQWRZX');
 
CREATE TABLE DEPT02(
    DEPTNO INT(20),
    DNAME VARCHAR(20)
);
INSERT INTO DEPT02 VALUES(10'ABCDF');
INSERT INTO DEPT02 VALUES(20'AQWRZX');
cs

 

LEFT OUTER JOIN 과 RIGHT OUTER JOIN

Left Outer Join은 왼쪽 테이블이 모두 나오고, Right Outer Join은 오른쪽 테이블이 모두 나오는 것이다.

 

FULL OUTER JOIN  ( UNION )

 

Full Outer Join은 left조인과 right조인을 함께 쓰는 것으로, UNION을 이용해서 나타내줄 수 있다.

 

Natural Join 이란?

조인 하려는 컬럼명이 같아야한다. 또한, 중복 된 칼럼에 명칭을 따로 주지 않아도 된다.

조인 하려는 컬럼이 다를 경우 사용할 수 없다.

반응형

댓글