2020041004 / [3] ansi join
- ORACLE
- 2020. 4. 30.
-- [3] ansi join
-- 3-1) ansi cross join
select * from emp cross join dept; -- 데이터베이스 표준협회 협약된 공용으로 사용되는 형식이다
-- 3-2) ansi inner join
select ename, emp.deptno, dname
from emp inner join dept -- 오라클 ique join 과 동일
on emp.deptno = dept.deptno; -- where 대신 on 명령어를 사용한다
-- 위와 동일한 결과 값을 출력한다 using 명령어 사용
select ename, deptno, dname -- emp. 삭제
from emp inner join dept -- 오라클 ique join 과 동일
using (deptno);
select ename, emp.deptno, dname
from emp inner join dept
on emp.deptno = dept.deptno
where ename = 'SCOTT';
-- natural join
select ename, dname
from emp natural join dept;
-- 3-3) ansi outer join
-- deptno는 10이 공통으로 들어가 있다
create table dept10(
deptno number(2),
dname varchar2(14)
);
insert into dept10 values(10, '회계부');
insert into dept10 values(20, '연구소');
select * from dept10;
create table dept11(
deptno number(2),
dname varchar2(14)
);
insert into dept11 values(10, '회계부');
insert into dept11 values(30, '영업부');
select * from dept11;
--기존 오라클 방법
select * from dept10, dept11
where dept10.deptno = dept11.deptno; --같은 deptno값을 가진 10인 회계부만 출력된다
select * from dept10, dept11
where dept10.deptno = dept11.deptno(+); -- outer join 실행값 확인
select * from dept10, dept11
where dept10.deptno(+) = dept11.deptno; -- ourter join 실행값 확인
select * from dept10, dept11
where dept10.deptno(+) = dept11.deptno(+) -- error 2군데 모두 (+)를 사용하는것은 지원이 안된다 -- ansi 표준에서는 지원한다
-- ansi
-- 오라클 (+) 기호가 아니라 left / right 명령어를 사용하여 outer join를 동작한다
select * from dept10 left outer join dept11 -- left outer join
on dept10.deptno = dept11.deptno;
select * from dept10 right outer join dept11 -- right outer join
on dept10.deptno = dept11.depno;
select * from dept10 full outer join dept11 -- full outer join 명령이 있어 전부 다 출력할 수 있다(오라클 없음)
on dept10.deptno = dept11.deptno;
'ORACLE' 카테고리의 다른 글
2020041005 / sub-query(서브 쿼리) (0) | 2020.04.30 |
---|---|
2020040905 / Foreign key(외래키) 제약 조건 (0) | 2020.04.30 |
2020041004 / 5) outer join (0) | 2020.04.30 |
2020090404 / 특정컬럼 null 값 입력은 안돼(오작성 방지) 제약조건 설정 (0) | 2020.04.30 |
2020041403 /데이터 제어어 DCL(Data Control Language) (0) | 2020.04.30 |