DB

조인(JOIN)

그zi운아이 2023. 9. 22. 15:27

조인(JOIN)

조인이란 두 개  이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것을 말한다. 조인은 데이터베이스에서 데이터를 효율적으로 관리하고 데이터 간의 관계를 활용하는 중요한 기술 중 하나이다.

일반 적으로 조인의 유형은 INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL OUTER JOIN

INNER JOIN(내부 조인)

조인 중 가장 많이 사용되는 조인으로, 대개의 업무에서 조인은 INNER JOIN을 사용한다.

INNER JOIN을 사용하기 위한 경우를 생각해보다 유저테이블엔 아이디 비밀번호 주소 나이 등의 컬럼이있고 

구매 테이블엔 사용자와 물건의 아이디가 있다고 할때 회원의 주소를 알기 위해서는 유저 테이블의 주소가 필요한대 이럴떄 INNER JOIN을 이용하면 효율적으로 관리가 가능하다.

SELECT <열 목록> 
FROM <첫 번째 테이블>
	INNER JOIN<두 번째 테이블>
    ON <조인될 조건>
[WHERE 검색 조건]

위 조건에서 INNER JOIN을 JOIN으로만 써로 INNER JOIN으로 인식한다.

SELECT * 
	FROM BUY_TABLE
		INNER JOIN USER_TABLE
        	ON BUy_TABLE.userID = USER_TABLE.userID
    WHERE BUY_TABLE.userID = 'JYP';

위 쿼리문은 구매 테이블 중에서 JYP라는 아이디를 가진 사람이 구매한 물건을 발송하기 위한 데이터를 조인해서 가지고온다.

위와 같이 검색함으로 성능을 올릴 수 있다.

 

OUTER JOIN

OUTTER JOIN은 조인의 조건에 만족되지 않는 행까지도 포함시키는 것이다,  그러나 OUTER JOIN을 사용할 때 주의할 점은 결과에 NULL 값이 포함될 수 있으므로 데이터 처리 및 결과 해석에 주의가 필요하다

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

.LEFT JOIN

왼쪽 테이블의 모든 행을 포함하고 오른쪽 테이블 에서 일치하는 행을 포함한다.

오른쪽 테이블에서 일치하는 행이 없으면 NULL이 결과에 나타난다.

왼쪽 테이블의 모든 행을 보존하면서 오른쪽 테이블과 관련된 정보가 필요한경우 사용된다.

SELECT *
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

RIGHT OUTER JOIN

LEFT OUTER JOIN의 반대로. 오른쪽 테이블의 모든 행을 포함하고 왼쪽 테이블에서 일치하는 행을 포함한다.

왼쪽 테이블에서 일치하는 행이 없으면 NULL값이 결과에 나타난다.

오른쪽 테이블의 모든 행을 보존하면서 왼쪽 테이블과 관련된 정보가 필요한 경우 사용된다.

SELECT *
FROM Orders
RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

FULL OUTER JOIN

왼쪽 테이블과 오른쪽 테이블 모두의 모든 행을 포함한다.

어느 한쪽에만 일치하는 행이 있는 경우에도 결과에 포함시킨다.

양쪽 테이블의 모든 형의 정보가 필요한경우 사용된다

SELECT *
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

CROSS JOIN(상호 조인)

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

CROSS JOIN의 결과 개수는 두 테이블 개수를 곱한 개수가 된다. 

CROSS JOIN에는 ON구문을 사용할 수 없다.

SELECT * 
	FROM BUT_TABLE
    	CROSS JOIN USER_TABLE

SELF JOIN

SELF JOIN은 별도의 구문이 있는것이 아니라 자기 자신과 조인한다는 의미이다.

동일한 테이블을 서로 다른 별칭을 사용하여 결합하는데 주로 계층 구조를 가진 데이터나 트리 구조를 가진 데이터를 처리할 때 사용된다.

SELECT A.DepartmentName AS ParentDepartment, B.DepartmentName AS SubDepartment
FROM Department A
LEFT JOIN Department B ON A.DepartmentID = B.ParentDepartmentID;