Database -Mysql,Oracle

[DB] JOIN 조인

은은하게미친자 2022. 7. 17. 00:38
728x90

조인?

두개이상의 테이블을 연결하여 하나의 테이블 처럼 출력할때 사용, 종류로는 등가조인, 비등가조인,자체조인,외부조인 등이 있다.

 

테이블을 

조인하지 않고 SELECT * FROM EMP, DEPT 일경우

데이터가 맞아떨어짐과 상관없이  각테이블의 행의 곱의 경우의수로 일괄 출력된다. 

 

1. 등가조인

내부조인, 단순조인으로 부르기도 하며 특정 열과 값이 일치한 출력결과를 사용하는 방식.

ex)

select e.empno, e.ename, d.deptno, d.dname, d.loc
from emp e, dept d
where e.deptno= d.DEPTNO
order by d.DEPTNO, e.EMPNO;

2. 비등가조인

등가조인방식 외의 방식을 의미, 각 데이터가 일치하는 경우가 아닌 비교등의 방식으로 연관지어 데이터를 산출 할수 있는 경우에 사용 ex) 급여를 가지고있는 행과,  직급당 급여의 최소 최대값을 가지고있는 테이블을 연관 할경우.

select e.*, s.*
from emp e, salgrade s
where e.sal between s.LOSAL and s.HISAL;

 

3. 자체조인

하나의 테이블이지만 selct문 내부에서 별칭을 각각 달리주어 논리적으로 다른 테이블인 것처럼 명시하여 두테이블을 조인하는 방식.

select a.empno, a.ENAME, a.mgr, b.EMPNO, b.ENAME
from emp a, emp b
where a.MGR=b.EMPNO;

4. 외부조인(outer join)

조인 조건 데이터중 어느 한쪽이 NULL임에도 결과를 출력하는 방식

 

왼쪽조인 : 오른쪽 테이블과 매칭이되지 않을 경우 null을 반환한다.

오른쪽조인 : 왼쪽 테이블과 매칭이 되지 않을 경우 null을 반환한다.

  오라클  mysql
왼쪽 외부 조인 where table1.col1=table2.col1(+) SELECT 속성_리스트
FROM 테이블1
LEFT JOIN 테이블2
ON 테이블1. 속성 = 테이블2.속성
[ ORDER BY 속성 ];

또는

SELECT 속성_리스트
FROM 테이블1
LEFT OUTER JOIN 테이블2
ON 테이블1. 속성 = 테이블2.속성
[ ORDER BY 속성 ];
오른쪽 외부 조인 where table1.col1(+)=table2.col1 SELECT 속성_리스트
FROM 테이블1
RIGHT JOIN 테이블2
ON 테이블1. 속성 = 테이블2.속성
[ ORDER BY 속성 ];

또는

SELECT 속성_리스트
FROM 테이블1
RIGHT OUTER JOIN 테이블2
ON 테이블1. 속성 = 테이블2.속성
[ ORDER BY 속성 ];

왼쪽 조인 예시

select a.empno, a.ENAME, a.mgr, b.EMPNO, b.ENAME
from emp a
left join emp b
on a.MGR=b.EMPNO;

결과물

 

상급자가 존재 하지 않는 직원

 

 

 

 

 

 

 

 

 

오른쪽 조인 예시

select a.empno, a.ENAME, a.mgr, b.EMPNO, b.ENAME
from emp a
right join emp b
on a.MGR=b.EMPNO;

 

부하직원이 없는 사원

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


SQL-99 표준문법으로 배우는 조인

 

1. NATURAL JOIN

등가조인을 대신해 사용 할 수 있는 조인 방식.

조인대상이 되는 두 테이블에 이름과 자료형이 같은 열을 찾은 후 그열을 기준으로 등가조인을 해주는 방식

조인이 되는 열에 테이블 명을 붙이면 안됨**

 

SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM, DEPTNO, D.DNAME,D.LOC
FROM EMP E natural join DEPT D
ORDER BY DEPTNO, E.EMPNO;

2.JOIN~ USING

기존 등가조인을 대신하는 조인 방식 ,NATURAL JOIN이 자동으로 조인 기준 열을 지정하는 것과 달리 USING키워드에 조인 기준으로 사용할 열을 명시하여 사용.

조인이 되는 열에 테이블 명을 붙이면 안됨**

SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM, DEPTNO, D.DNAME,D.LOC
FROM EMP E JOIN DEPT D USING (DEPTNO)
ORDER BY DEPTNO, E.EMPNO;

3.JOIN ~ ON

기존 WHERE절에 있는 조인 조건식을 ON키워드 옆에 작성,

SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM, E.DEPTNO, D.DNAME,D.LOC
FROM EMP E JOIN DEPT D ON (E.DEPTNO=D.DEPTNO)
ORDER BY DEPTNO, E.EMPNO;

4. OUTER JOIN

왼쪽 외부조인 SELECT 속성_리스트
FROM 테이블1
LEFT OUTER JOIN 테이블2
ON 테이블1. 속성 = 테이블2.속성
[ ORDER BY 속성 ];
오른쪽 외부조인 SELECT 속성_리스트
FROM 테이블1
RIGHT OUTER JOIN 테이블2
ON 테이블1. 속성 = 테이블2.속성
[ ORDER BY 속성 ];
전체 외부조인 SELECT 속성_리스트
FROM 테이블1
FULLOUTER JOIN 테이블2
ON 테이블1. 속성 = 테이블2.속성
[ ORDER BY 속성 ];
728x90