KIC/DB 오라클

day07 - 오라클 (Equi join 문, not - Equi, outer join, full outer join, self join, Sub Query)

바차 2021. 7. 10. 18:44
반응형

[Equi join]

 

--Oracle join 문법

SCOTT>SELECT sname "3140|E", pname "X/Em-g"
FROM students, professor p

WHERE s.profno = p.profno
AND s.deptno1 = 101;



-ANSI Join 문법
SCOTT SELECT s.name "0", p.name "XE+g"
FROM student s JOIN professor p
ON s.profno = p.profno
AND s.deptno1 = 101;

 

(오늘 정보처리기사 시험이 있었는데 Oracle join 방법만 알고 ANSI join 방법은 몰랐는데 시험에 ansi 조인 나와서 틀렸다.. 이제 까먹지 말자)

 

 

 

 

 

[not - Equi]

--Oracle join 문법

SCOTT SELECT go.gname "고객명", go.point "POINT", gi.gname "상품명

FROM gogak go, gift gi
WHERE go.point BETWEEN gi.g_start AND gi.g_end;

-ANSI Join 7
SCOTT SELECT go.gname "고객명", go.point "POINT", gi.gname "상품명"
FROM gogak go JOIN gift gi
ON go.point BETWEEN gi.g_start AND gi.g_end;

 

 

[outer join]

--Oracle join 문법

SELECT s.name "학생이름", p.name "교수이름"
FROM student s, professor p
WHERE s.profno = p.profno(+) ;


- Ansi Outer Join
SELECT s.name "학생이름", p.name "교수이름"

FROM student s LEFT OUTER JOIN professor p
ON s.profno = p.profno;

 

 

 

 

[full outer join]

--Oracle join 문법

SELECT s.name "학생이름", p.name "교수이름"
FROM students, professor p WHERE s.profno(+) = p.profno UNION
SELECT s.name "o", p.name "교수이름"
FROM students, professor p
WHERE s.profno = p.profno(+);

-ANSI Join
SELECT s.name "학생이름", p.name "교수이름"
FROM student s FULL OUTER JOIN professor p
ON s.profno = p.profno;

 

 

 

 

[self join]

--Oracle join 문법

SELECT a.dname , b.dname 
FROM dept2 a, dept2 b
WHERE a.pdept = b.dcode ;

-ANSI Join
SELECT a.dname , b.dname
FROM dept2 a JOIN dept2 b
ON a.pdept = b.dcode ;

 

 

 

 

[Sub Query]

작성시 주의사항

- 서브 쿼리 부분은 where 절에 연산자 오른쪽에 위치해야 한다.

 

- 반드시 괄호로 묶을 것

 

- 특별한 경우를 제외하고 너브 쿼리 절에 order by 절이 올 수 없음

 

- 단일 행 서브 쿼리와 다중 행 서브쿼리에 따라 연산자를 잘 선택해야 한다.

 

 

 

 

 

 

[단일 행 sub query]

 

 

 

 

[다중 행 subquery]

 

300x250