본문 바로가기
Programming/SQL

SQL / 조인 / Inner Join / Outer Join / Non-equi Join / Self Join

by with chu 2021. 3. 16.
728x90

Join ( Oracle )

1. Inner Join          2. Outer Join         3. Non-equi Join       4. Self Join


 

Join :   두 개 이상의 테이블을 서로 묶어서 하나의 테이블로 출력하는 것

 

1. Inner Join

이너 조인은 서로 매칭되는 행에 대해서만 묶어서 조회한다.  가장 보편적이다.
SELECT *
FROM EMPLOYEE INNER JOIN DEPARTMENT
ON EMPLOYEE.DepartmentID = DEPARTMENT.DepartmentID;

 

SELECT *
FROM EMPLOYEE, DEPARTMENT
WHERE EMPLOYEE.DepartmentID = DEPARTMENT.DepartmentID;

 

 

2. Outer Join

아우터 조인은 매칭되지 않는행도 함께 join 한다.
Outer Join에는 Left Outer Join, Right Outer Join, Full Outer Join이 있다.
Left, Right는 모두 조회할 테이블 방향이다.

 

SELECT *
FROM A LEFT OUTER JOIN B ON A.CODE = B.CODE

 

SELECT *
FROM A FULL OUTER JOIN B ON A.CODE = B.CODE
WHERE A.CODE IS NULL OR B.CODE IS NULL

 

추가)

SQL> select e.empno, d.dname, e.ename, e.sal
  2  from emp e, dept d
  3  where e.deptno = d.deptno(+);

(+) : 정확하게 일치하는 행말고도 다 보이게  +null 레코드들을 만들어준다. 보통 parent 에 붙여준다.

 

 

3. Non-equi Join

between을 사용하여 매칭 컬럼 없이 범위로 join 한다.
SQL> select e.empno, e.sal, g.grade
  2  from emp e, salgrade g
  3  where e.sal between g.losal and g.hisal;

 

 

4. Self Join

셀프 조인은 참조할 테이블이 자기자신인 경우이다. 꼭 별칭을 써서 구분해야한다.

SQL> select e.empno 사원번호, e.ename 사원명, e.mgr “관리자 코드”, m.ename 관리자명
  2  from emp e, emp m
  3  where e.mgr = m.empno(+);

self조인

-----------(E)-----------child
employee_id
first_name
manager_id  # e.mgr
salary

-----------(M)----------parent
employee_id   # m.empno
first_name
manager_id
salary

 

 

 

참고)

[블로그] Tech

728x90

댓글