티스토리 뷰

JOIN

테이블을 서로 연결해 하나의 테이블인 것처럼 보여준다.

하나의 데이터가 테이블이 아닌 여러 테이블에서 가져와 출력하기 때문에 출력 결과가 크다.

 

SELECT  employees.employee_id, 
	employees.last_name, 
	employees.salary, 
	departments.department_name
   FROM employees JOIN departments
     ON employees.department_id = departments.department_id;

SELECT  e.employee_id,
	e.last_name, 
	e.salary, 
	d.department_name
   FROM employees e JOIN departments d
     ON e.department_id = d.department_id;

 

같은 방식이더라도 alias를 이용해 위치를 표기하면 성능이 좋아진다.

 

테이블 조인 조건 수
2 1
3 2
N N-1

 

셀프조인

자기 자신 테이블과 조인하는 유형으로 테이블 alias를 반드시 활용해야한다.

하나의 테이블을 마치 다른 테이블인 것처럼 테이블 alias를 다르게 부여한다.

SELECT  e1.employee_id, e1.last_name as emp_name,
	e2.last_name as mg_name
  FROM employees e1 JOIN employees e2
    ON e1.manager_id = e2.employee_id;

 

* 조인하는 방법

1. 양쪽에서 공통된 데이터가 들어있는 컬럼을 찾는다. (공통된 컬럼이 아니다!)

2. 공통된 컬럼이 하나일 때는 그걸 중점으로 찾고,

2-1. 양쪽에 공통된 컬럼이 여러 개일 때는 내가 출력하고자하는 결과가 무엇인지 생각한다.

3. 테이블 순서에 맞게, 어느 테이블이 주 테이블인 건지 확인한다.

 

유의할 점

1. 보통 조인할 때 포린키 적용된 것위주로 한다. (조인의 기준이 되는 컬럼을 선정할 때 용이)

2. 테이블은 이름별로 따로 설정하는 게 좋다

3. 컬럼명이 같은 걸 조인하는 게 아니다! 이건 의미없이 같을 수 있는 거고, 안의 공통된 데이터가 들어있는 컬럼끼리 조인해야한다.

 

 

사원들의 사번, 이름, 급여, 부서 이름을 출력

SELECT E.EMPLOYEE_ID, E.LAST_NAME, E.SALARY, D.DEPARTMENT_NAME
  FROM EMPLOYEES E JOIN DEPARTMENTS D
    ON E.DEPARTMENT_ID=D.DEPARTMENT_ID;

 

부서번호, 부서이름, 부서의 매니저ID, 부서의 매니저 이름을 출력

SELECT D.DEPARTMENT_ID, D.DEPARTMENT_NAME, D.MANAGER_ID, E.LAST_NAME
  FROM DEPARTMENTS D JOIN EMPLOYEES E
    ON D.MANAGER_ID=E.EMPLOYEE_ID;

 

위와 같이 같은 데이터라도 조인을 무엇과 하느냐에 따라 결과가 달라진다!

 

 

사원들의 사번, 이름, 사원의 매니저ID, 사원의 매니저 이름을 출력

SELECT E1.EMPLOYEE_ID, E1.LAST_NAME, E1.MANAGER_ID, E2.LAST_NAME
  FROM EMPLOYEES E1 JOIN EMPLOYEES E2
    ON E1.MANAGER_ID=E2.EMPLOYEE_ID;

 

 

'배운 것 기록 > DB' 카테고리의 다른 글

[Oracle] Inner Join / Outer Join  (0) 2022.07.10
[Oracle] Natural / Using JOIN  (0) 2022.07.08
[Oracle] SQL Developer  (0) 2022.07.06
[Oracle] Oracle DBMS 접속 방법  (0) 2022.06.23
[MySQL] DDL(create, alter, drop, truncate)  (0) 2022.06.17
댓글
최근에 올라온 글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함