티스토리 뷰

Database

JOIN

kingsubin 2020. 7. 28. 20:46

조인  

- 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것이다.

따라서 조인은 테이블로서 저장되거나, 그 자체를 이용할 수 있는 결과 셋을 만들어 낸다.

JOIN은 2개의 테이블에서 각각의 공통값을 이용함으로써 필드를 조합하는 수단이 된다.

ANSI 표준 SQL은 네가지 유형의 JOIN을 규정한다.

 

1. INNER JOIN

2. OUTER JOIN

3. LEFT JOIN

4. RIGHT JOIN

 

교차 조인

- CROSS JOIN 절은 조인되는 두 테이블에서 곱집합을 반환한다.

즉, 두 번째 테이블부터 각 행과 첫 번째 테이블에서 각 행이 한번씩 결합된 열을 만든 것이다.

ex) m행을 가진 테이블과 n행을 가진 테이블이 교차 조인되면 m * n 개의 행을 생성한다.

// 명시적 
SELECT * FROM employee CROSS JOIN department;

// 암묵적
SELECT * FROM employee, department;

 

내부 조인

- inner join은 여러 애플리케이션에서 사용되는 가장 흔한 결합 방식이며, 기본 조인 형식으로 간주된다.

내부 조인은 조인 구문에 기반한 2개의 테이블 (A, B) 의 컬럼 값을 결합함으로써 새로운 결과 테이블을 생성한다.

 

// 명시적 
SELECT * 
FROM employee INNER JOIN department
ON employee.DepartmentID = department.DepartmentID;

// 암시적 
SELECT *
FROM employee, department
WHERE employee.DepartmentID = department.DepartmentID;

 

외부 조인

 

- 왼쪽 외부 조인

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

 

- 오른쪽 외부 조인

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

 

-> 기준이 되는 테이블이 무엇이냐에 따른 것

결과가 왼쪽 테이블 전체 데이터 대상이라면 left, 오른쪽 테이블의 전체 데이터가 대상이라면 right

left : 오른쪽 테이블에 조인시킬 컬럼의 값이 없는 경우

right : 왼쪽 테이블에 조인시킬 컬럼의 값이 없는 경우

 

 

- 완전 외부 조인

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

-> 양쪽 테이블 모두 Outer Join 걸어야 하는 경우

 

셀프 조인

- 자가 조인은 한 테이블에서 자기 자신에 조인을 시키는 것이다.

 

-> 하나의 테이블을 여러번 복사해서 조인한다고 생각. 

     자신이 가지고 있는 컬럼을 다양하게 변형시켜 활용할 경우 사용.

SELECT F.EmployeeID, F.LastName, S.EmployeeID, S.LastName, F.Country
FROM Employee F INNER JOIN Employee S
ON F.Country = S.Country
WHERE F.EmployeeID < S.EmployeeID
ORDER BY F.EmployeeID, S.EmployeeID;

 

 


※출처

ko.wikipedia.org/wiki/Join_(SQL)

'Database' 카테고리의 다른 글

공동주택 공시가격 DB 저장하기  (2) 2024.02.15
mysql whitespace to null  (0) 2024.02.14
MySQL wait_timeout  (0) 2023.10.27
PostgreSQL collate 한글 컬럼 정렬  (2) 2023.04.04
PostgreSQL Index  (2) 2023.02.26