SQL_ORACLE

[ORACLE] 조인 과 ANSI 조인

유호야 2021. 11. 1. 11:39
반응형

JOIN

​-두개 이상의 테이블을 하나 이상의 조건을 걸어 합치는거.

테이블의 관계

 1) 1:다

     1-부모테이블 다-자식테이블

primary key = 테이블의 레코드를 식별할 수 있는 칼럼(기준)

부모-->자식 넘어감

// '다'를 기준으로 하면 쉬움

 

  2) 다:다

-중간테이블을 하나 새로 생성해 중복제거 최소화 (즉 테이블 3개)

 

 (1) EQUI JOIN - 값을 일치시켜 두개의 테이블을 연걸하는 기본 조인방법

 

ex)

select e.ename , d.dname

from emp e , dept p

where e.deptno=d.deptno;

 

 

(2) NON-EQUI JOIN - 값을 비교(연산자)하면서 두개의 테이블을 연결하는 조인방법

 

ex)

select e.ename, e.job, e.sal , s.grade

from emp e, salgrade s

where e.sal between s.losal and s.hisal ;

(3)​ SELF JOIN - 한개의 테이블을 한개이상의 테이블처럼 사용하는 조인

​ex)

SELECT e.ename, m.ename

FROM emp e, emp m

WHERE e.mgr = m.empno;

(4) OUTER JOIN - 조인할때 만족값이없으면 행이 사라지니까 안사라지게

                           null 값을 넣어줘서 행을 살림

// 없는쪽에 null사용 ---> (+)

outer테이블 -> 두테이블 중  null 없어도 조건을 만족하는 테이블

ex)

select e.ename, m.ename

from emp e, emp m

where e.mgr = m.empno(+)

  // 이 예제기준으로 emp e가 아웃터테이블임.

full outer join= 둘다 outer테이블

---null없이도 조건만족   

 

 

 

ANSI 조인

​-조인하는건데 국제적 표준 조인 방법이다. 문법이 다름

 왜쓰냐? 일하다 오라클안돼서 다른 DBMS를 사용하게되면 오라클 조인으로 만든조인문법 다른 DBMS가 못읽을수도 있으니까 그럼 싹 다 바꿔야되니까 빡치니까

처음에 짤때부터 국제표준인 ANSI로 짜면 그런 만에하나의 경우에 대비할 수 있당^^ 

ANSI 내부조인

​[SY]

ex) 기존조인

select     e.employee_id , d.department_name

from       employees e, departments d

where     e.department_id = d.department_id

 

ex2) ANSI조인

select     e.employee_id , d.department_name

from       employees e INNER JOIN departments d

ON         e.department_id = d.department_id

 

기존은 where 절에서만 조인을 조졌는데 ansi조인은 from 절에서 innerjoin 조지고

on 이라는 새로운명령어를 쓴다. where 절은 원래대로 조건만 쓴다.

ex3) ANSI조인

select     e.employee_id , d.department_name, department_id

from       employees e INNER JOIN departments d

USING     ( department_id ) ;

조인하는 두 테이블의 칼럼명이 같을경우 using 을 사용하여 쉽게 쓸 수 있다.

단, using 쓸려면 select절에도 해당 칼럼이름앞에 e나d를 붙히면 오류난다.

 

ANSI 외부조인

[SY]

from table A [ LEFT/ RIGHT / FULL ] OUTER JOIN TABLE B

아웃터조인이다. 기존은 데이터가 없는쪽에 (+)를 붙혔다면 ANSI조인은

아웃터테이블(데이터 가지고 있는 테이블)의 위치를 같이 적어준다( 왼쪽,오른쪽)

 

둘다 아웃터조인인 풀아웃터조인은 기존 조인방법으로는 사용못하지만 여기서는 FULL을

이용해서 사용가능 하다.

 

 

 

[ORACLE] 조인 과 ANSI 조인

JOIN ​-두개 이상의 테이블을 하나 이상의 조건을 걸어 합치는거. ​ 테이블의 관계  1) 1:다     1-부모테이블 다-자식테이블 primary key = 테이블의 레코드를 식별할 수 있는 칼럼(기준) 부모-->자

glutinousricecookie.tistory.com

 

반응형