2020041004 / 5) outer join

3) non-eqie join (비등가조인) -- 2개 이상의 테이블에 사용이 가능하다

select * from tab;

select * from emp;

select * from salgrade; -- 이것만 먼저 실행해 본다 // 3개 컬럼 5개 레코드가 담겨져 있다 // 급여에 대한 등급 정보


select ename, sal, grade

from emp, salgrade

where sal >= losal and sal <= hisal;


-- between a and b 구문 사용 가능, 위와 동일한 결과가 출력된다

select ename, sal, grade

from emp, salgrade

where sal between losal and hisal;



-- 실습
-- emp, dept, salgrade 2개의 테이블 join -- 2개 이상의 테이블에 사용이 가능하다
select ename, sal, grade, dname
from emp, dept, salgrade
where emp.deptno = dept.deptno
and sal >= losal and sal <= hisal;

=====================================================================


-- 4) self join : 하나의 테이블 내에서 자기 자신과 조인을 통해 원하는 자료를 얻는 방법이다

select * from emp;


select ename, mgr

from emp


select employee.ename, employee.mgr, manager.ename

from emp employee, emp manager  --별칭을 부여 emp 1개의 테이블을 2개의 테이블인 것처럼 인식하게 가능하다

where employee.mgr = manager.empno;


=====================================================================

-- -- https://tychejin.tistory.com/108 블로그 작성 시 참조할 사이트


-- 5) outer join

-- : join 조건에 만족하지 못해서 해당 결과를 출력시에 누락이 되는 문제점이 발생 시 

--  누락된 해당 레코드(row)를 출력하고 싶을 때 사용한다


select employee.ename, employee.mgr, manager.ename

from emp employee, emp manager

where employee.mgr = manager.empno(+);

-- 사장은 사원의 관점에서 사수가 없어서 데이터가 누락되는 문제

-- 데이터가 누락되어 있어도 그것도 출력을 원할 때 (+)명령어 사용 없는쪽에 (+)를 붙여야 한다



-- 6) ansi join

-- 6)-1 ansi cross join

-- 6)-2 ansi inner join

-- 6)-3 ansi outer join



























댓글

Designed by JB FACTORY