Cartesian Productd(카티시안 곱)의 이해
카티션 곱(cartesian product)은 엄밀히 말하면 조인이라고 할 수 없는 조인으로,
WHERE 절에 조인 조건을 주지 않는 것을 말합니다.
두 테이블을 기준으로 FROM 절에는 두 개의 테이블을 명시하지만 WHERE 절에서 조인 조건을 주지 않습니다.
(WHERE 절을 추가하지 않거나 WHERE 절을 추가해도 조인 조건을 주지 않는 경우).
그 결과 두 테이블의 데이터를 기준으로 가능한 모든 조합의 데이터가 조회됩니다.
emp 테이블의 사원이름, 부서번호, 부서명을 출력해보세요
SQL> select ename,emp.deptno,dname from emp join dept on emp.deptno = dept.deptno;
급여가 3000에서 5000 사이의 사원이름과 부서명을 출력해보세요
SQL> select ename,dname from emp join dept on emp.deptno = dept.deptno and sal between 3000 and 5000;
부서명이 ACCOUNTING인 사원의 이름,입사일,부서번호,부서명을 출력해보세요
SQL>select ename,hiredate,emp.deptno,dname from emp join dept on emp.deptno = dept.deptno and dname = 'ACCOUNTING'; <br> SQL> select ename,hiredate,emp.deptno,dname from emp,dept where emp.deptno = dept.deptno and dname = 'ACCOUNTING' <br> SQL> select e.ename,e.hiredate,e.deptno,d.dname from emp e,dept d where e.deptno = d.deptno and dname = 'ACCOUNTING';
커미션이 null이 아닌 사원의 이름, 입사일, 부서명을 출력해보세요
SQL> select e.ename,e.hiredate,d.dname from emp e join dept d on e.deptno = d.deptno and e.comm is not null;
각 사원의 이름과 매니저 이름을 출력하세요
SQL> select e1.ename,e2.ename from emp e1 join emp e2 on e1.mgr = e2.empno;
한 쪽 테이블에는 해당하는 데이터가 존재하는데 다른 테이들에는 데이터가 존재하지 않을 때에도 모든 데이터를 추출하도록 하는 JOIN 방법
사원번호, 부서번호, 부서명을 출력해보세요
단, 사원이 근무하지 않는 부서 정보도 같이 출력해보세요
SQL> select e.empno,d.deptno,d.dname
from dept d
left outer join emp e
on e.deptno = d.deptno;
[ QUIZ ]
SQL> select d.deptno,d.dname,e.ename,e.sal
from emp e,dept d;
SQL> select e.ename,d.dname
from emp e
join dept d
on e.deptno = d.deptno
and e.ename='ALLEN';
단,emp테이블에 없는 부서도 출력해보세요
SQL> select e.ename,d.deptno,d.dname,e.sal
from dept d
left outer join emp e
on e.deptno = d.deptno;
SQL> select e.ename,d.deptno,d.dname,e.sal
from emp e
right outer join dept d
on e.deptno = d.deptno;
SMITH 의 매니저는 FORD 입니다
??? 의 매니저는 ??? 입니다
.
.
.
.
SQL> select e1.emp||'의 매니저는 '||e2.emp||'입니다'
from emp e1
join emp e2
on e1.mgr = e2.empno;