Skip to content

join #
Find similar titles

Structured data

Category
Database

Join #

정의 #

join(조인) 또는 결합 구문은 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것이다. 따라서 조인은 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어 낸다. JOIN은 2개의 테이블에서 각각의 공통값을 이용함으로써 필드를 조합하는 수단이 된다. ANSI 표준 SQL은 네가지 유형의 JOIN을 규정한다.

예시 테이블 #

Employee table

LastName DepartmentID
Rafferty 31
Jones 33
Steinberg 33
Robinson 34
Smith 34
John NULL

Department table

DepartmentID DepartmentName
31 영업부
33 기술부
34 사무부
35 마케팅

Inner Join #

내부 조인은 조인 구문에 기반한 2개의 테이블(A, B)의 컬럼 값을 결합함으로써 새로운 결과 테이블을 생성한다. 그 질의어는 조인 구문을 충족하는 모든 일치되는 결과 열을 찾기 위해 A 테이블의 각 열을 B 테이블의 각 열과 비교를 한다. 조인 구문이 충족되면, A, B 테이블에서 일치된 각 열의 컬럼 값은 결과 열로 결합된다. 예시 쿼리는 다음과 같다

SELECT *
FROM employee INNER JOIN department
ON employee.DepartmentID = department.DepartmentID;

해당 쿼리는 employee 테이블이 department 테이블의 내용을 참조 하며 조건은 ON구문에 나타난다 따라서 employee테이블의 DepartmentID칼럼이 department테이블의 DepartmentID칼럼과 같은것만 조회하게 된다 결과는 다음과 같다

Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Robinson 34 사무부 34
Jones 33 기술부 33
Smith 34 사무부 34
Steinberg 33 기술부 33
Rafferty 31 영업부 31

Left Outer Join #

LEFT OUTER JOIN은 왼쪽 테이블의 것은 조건에 부합하지 않더라도 모두 결합되어야 한다는 의미이다. 즉, FROM 첫번째 테이블 LEFT OUTER JOIN 두번째 테이블이라면, 첫번째 테이블의 것은 모두 출력되어야 한다. 예시 쿼리는 다음과 같다

SELECT *
FROM employee LEFT OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID;

해당쿼리는 ON구문의 join을 실행하되, 왼쪽 테이블 즉, employee테이블은 조건에 부합하지 않아도 모든 결과가 결합되어 출력된다. 결과는 다음과 같다

Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Jones 33 기술부 33
Rafferty 31 영업부 31
Robinson 34 사무부 34
Smith 34 사무부 34
John NULL NULL NULL
Steinberg 33 기술부 33

Right Outer Join #

RIGHT OUTER JOIN은 오른쪽 테이블의 것은 조건에 부합하지 않더라도 모두 결합되어야 한다는 의미이다. 즉, FROM 첫번째 테이블 RIGHT OUTER JOIN 두번째 테이블이라면, 두번째 테이블의 것은 모두 출력되어야 한다. 예시 쿼리는 다음과 같다

SELECT *
FROM employee RIGHT OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID;

해당쿼리는 ON구문의 join을 실행하되, 오른쪽 테이블 즉, department 조건에 부합하지 않아도 모든 결과가 결합되어 출력된다. 결과는 다음과 같다

Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Smith 34 사무부 34
Jones 33 기술부 33
Robinson 34 사무부 34
Steinberg 33 기술부 33
Rafferty 31 영업부 31
NULL NULL 마케팅 35
0.0.1_20210630_7_v33