Oracle 기본정리 - Join 기본편(cross, equi, left, right join)
Oracle 기본정리 - Join 기본편(cross, equi, left, right join)
-다음 테이블 2개를 하나의 테이블로 만들어보자
select empno, ename,deptno from emp;
select * from dept;
--cross join
select * from dept,emp;
--equi join
select * from emp,dept where emp.deptno=dept.deptno;
--예제
--뉴욕에서 근무하는 사원의 이름과 급여
select e.ename, e.sal, d.loc
from emp e,dept d
where e.deptno=d.deptno
AND d.loc = 'NEW YORK'; --equi join
--accounting 부서 소속 사원의 이름과 입사일
select e.ename, e.hiredate
from emp e, dept d
where e.deptno = d.deptno
AND d.dname = 'ACCOUNTING';
--직급이 MANAGER인 사원의 이름, 부서명을 출력
select e.ename, d.dname
from emp e,dept d
where e.deptno = d.deptno
and e.job='MANAGER';
--매니저가 king인 사원들의 이름과 직급을 출력
select e1.ename, e1.job
from emp e1,emp e2
where e1.mgr=e2.empno
and e2.ename = 'KING';
--ALLEN과 동일한 부서에서 근무하는 사원의 이름을 출력
select e1.ename, e2.ename
from emp e1, emp e2
where e1.deptno = e2.deptno
and e1.ename='ALLEN'
and e2.ename<>'ALLEN';
--left, right join
--lefter outer join
select dname,dept.deptno,ename
from emp, dept
where emp.deptno(+) = dept.deptno;
--lighter outer join
select dname,dept.deptno,ename
from emp, dept
where emp.deptno = dept.deptno(+);
--테이블 만들어서 테스트
create table a1
(
id number(3),
name varchar2(20)
);
create table a2
(
id number(3),
name varchar2(20)
);
insert into a1 values(1,'a1');
insert into a1 values(2,'a2');
insert into a1 values(3,'a3');
insert into a2 values(2,'b1');
insert into a2 values(3,'b2');
insert into a2 values(4,'b3');
--(+) 사용
=>oracle, mssql, mysql 등등 표준 sql문
--outer join 사용
=>ansi 표준 sql문
--예제
--lefter outer join 방법1
select *
from a1,a2
where a1.id = a2.id(+); --oracle..etc 표준 sql문
--lefter outer join 방법2
select *
from a1 left outer join a2 --ansi 표준 sql문
on a1.id = a2.id;
--righter outer join 방법1
select *
from a1,a2
where a1.id(+) = a2.id; --oracle..etc 표준 sql문
--righter outer join 방법2
select *
from a1 right outer join a2 --ansi 표준 sql문
on a1.id = a2.id;
--full outer join
select *
from a1 full outer join a2 --ansi 표준 sql문
on a1.id = a2.id;
--inner join ( where a1.id = a2.id 와 같다, 단순 테이블 연결용, ※using 권장안함)
select *
from a1 inner join a2 --ansi 표준 sql문
on a1.id = a2.id;
'프로그래밍 정리 > Oracle' 카테고리의 다른 글
Oracle 기본정리 - sub query1(where절에 select 넣어보기) (0) | 2019.12.04 |
---|---|
Oracle 기본정리 - Join 응용편(cross, equi, left, right inner join) (0) | 2019.11.29 |
Oracle 기본정리 - scott계정 테이블사용하기(emp,dept....) (0) | 2019.11.29 |
Oracle 기본정리 - Group By 응용편 (0) | 2019.11.29 |
Oracle 기본정리 - Group By 기본편 (0) | 2019.11.29 |