꿈 많은 Dreamer

SQL에서 JOIN을 걸어보자! 본문

ICT/SQL

SQL에서 JOIN을 걸어보자!

앤젠시 2021. 3. 20. 20:00
SQL에서 Join은 서로 다른 테이블간에 설정된 관계가 결합하여 1개 이상의 테이블에서 데이터를 조회하기 위해 사용됩니다. Join의 종류로는 내부조인(Inner Join) / 외부조인 (Outer Join) / 셀프조인 (Self Join) / 안티조인 (Anti Join) / 세미조인 (Semi Join) / 크로스조인 (Cross Join) 등이 있습니다.

 

내부조인이란 2개의 테이블에서 공통적으로 존재하는 컬럼의 값이 일치되는 행을 연결하여 결과를 생성하는 조인 방법입니다. 아래와 같이 예제를 확인해 봅시다.

Select emp.first_name, emp.last_name, emp.email, emp.department_id, dep.department_name, emp.job_id, job.job_title, loc.city

from employees emp,

departments dep,

jobs job,

locations loc

where emp.department_id = dep.department_id

and emp.job_id = job.job_id

and dep.location_id = loc.location_id

and loc.city = 'Seattle';

 

SELECT d.DEPARTMENT_ID, e.DEPARTMENT_ID

FROM employees e

INNER JOIN departments d

ON d.DEPARTMENT_ID = e.DEPARTMENT_ID;

 

SELECT d.DEPARTMENT_ID, e.DEPARTMENT_ID

FROM employees e ,departments d

WHERE d.DEPARTMENT_ID = e.DEPARTMENT_ID;

 

 

외부조인이란 상호 테이블간에 일치되는 값으로 연결되는 내부조인과는 달리 어느 한 테이블에 공통 컬럼값이 없더라도 조회결과에 포함되게 하는 조인이며 조회 조건에서 (+) 기호를 사용하여 조인합니다.

Select e.employee_id, e.first_name, e.department_id, d.department_name, l.city

from employees e, departments d, locations l

where e.department_id = d.department_id (+)

and d.location_id = l.location_id (+);

 

SELECT d.DEPARTMENT_ID, e.DEPARTMENT_ID FROM employees e

LEFT/RIGHT OUTER JOIN departments d

ON d.DEPARTMENT_ID = e.DEPARTMENT_ID;

 

SELECT d.*, e.* FROM employees e, departments d

WHERE 1=1

AND d.DEPARTMENT_ID(+) = e.DEPARTMENT_ID ;

 

SELECT d.DEPARTMENT_ID, e.DEPARTMENT_ID FROM employees e, departments d

WHERE 1=1

AND d.DEPARTMENT_ID = e.DEPARTMENT_ID(+) ;

 

 

셀프조인은 동일한 테이블을 대상으로 조인을 맺는 것을 말하며 반드시 별명을 붙여서 사용합니다. 동일한 테이블에서 상호간의 관계를 맺고 있고, 이를 근거로 자료를 산출하고자 할 때 사용하며 자기참조 테이블(같은 테이블의 특정 컬럼을 참조하는 테이블)에서 셀프조인이 사용됩니다.

Select emp1.employee_id, emp1.first_name,

emp2.employee_id 상사ID, emp2.first_name 상사이름

from employees emp1, employees emp2

where emp1.manager_id = emp2.employee_id;

 

SELECT e1.employee_id "사원번호", e1.first_name "사원이름", e1.manager_id "상사번호",

e2.employee_id "상사의 사원번호", e2.first_name "상사이름"

FROM employees e1

INNER JOIN employees e2

ON e1.manager_id = e2.employee_id;

 

이처럼 JOIN은 SQL에서 유용하게 활용된답니다~

잘 마스터하면 편리하겠죠?!

'ICT > SQL' 카테고리의 다른 글

SQL 함수 정리 모음  (0) 2021.02.12
SQL 설치 후 Select 입문  (0) 2021.01.11
Comments