Let's Girin!

[SQLD] JOIN 본문

Database

[SQLD] JOIN

window= 2023. 11. 14. 17:21

 

1. JOIN

두 개 이상의 테이블을 연결 또는 결합하여 데이터를 출력하는 것을 JOIN이라고 한다. 


 

2.EQUI JOIN
SQL에서 두 테이블 간에 동등한 값에 기반하여 조인하는 방법이다. 즉, 두 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용된다. 

N개의 테이블 조인에서 조인조건은 대상 테이블 개수에서 하나를 뺀 N-1개 이상 필요하다.


2_1. INNER JOIN
두 테이블 간에 일치하는 행만을 결과로 반환.

2_1.1 Where절 사용

▷ where절에 Join 조건을 넣는다.

SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees, departments
WHERE employess.department_id = departments.department_id;

2_1.2  Inner Join 사용

▷ On 절에 Join 조건을 넣는다.

SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

 

2_2. NATURAL JOIN

두 테이블 간에 동일한 이름을 가진 컬럼을 기반으로 조인하는 방법이다. 명시적으로 ON이나 USING절 없이 사용되며 자동으로 조인 조건을 생성한다. 

SELECT * FROM table1 NATURAL JOIN table2;

 


3.NON EQUI JOIN
동등 연산자('=')가 아닌 다른 비교 연산자를 사용하여 두 테이블을 결합하는 조인 방법. 즉, 두 개의 테이블 간 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용한다. 

 

3_1. OUTER JOIN
일치하지 않는 행도 결과에 포함시키는 특징.

3_1.1 LEFT OUTER JOIN

왼쪽 테이블의 모든 행을 포함하며, 오른쪽 테이블과 일치하는 행이 있는 경우 해당 행을 결과에 포함한다. 일치하지 않는 경우, 오른쪽 테이블의 열은 NULL로 채워진다.

SELECT left_table.column1, left_table.column2, right_table.column3
FROM left_table
LEFT OUTER JOIN right_table ON left_table.matching_column = right_table.matching_column;

3_1.2 RIGHT OUTER JOIN

오른쪽 테이블의 모든 행을 결과에 포함하며, 왼쪽 테이블과 일치하는 행이 있는 경우 해당 행을 결과에 포함한다. 일치하지 않는 경우, 왼쪽 테이블의 열은 NULL로 채워진다.

SELECT left_table.column1, left_table.column2, right_table.column3
FROM left_table
RIGHT OUTER JOIN right_table ON left_table.matching_column = right_table.matching_column;

3_1.3 FULL OUTER JOIN

양쪽 테이블의 모든 행을 결과에 포함하며, 일치하는 행이 없는 경우에도 해당 쪽의 열을 NULL로 채운다. 공통된 부분을 제외하는 조인이다.

SELECT left_table.column1, left_table.column2, right_table.column3
FROM left_table
FULL OUTER JOIN right_table ON left_table.matching_column = right_table.matching_column;

4. CROSS JOIN

두 테이블 간의 모든 가능한 조합을 생성하는 조인방법이다. CROSS JOIN을 수행하면 결과의 행수가 증가되므로 주의하며 작은 크기의 테이블이나 특정 상황에서만 사용되어야 한다. 

SELECT * FROM table1 CROSS JOIN table2;
 
반응형

'Database' 카테고리의 다른 글

[SQLD] 요약+기출문제  (0) 2023.11.14
[SQLD] 데이터 모델링의 이해  (1) 2023.10.31