-
day07 - 오라클 (Equi join 문, not - Equi, outer join, full outer join, self join, Sub Query)KIC/DB 오라클 2021. 7. 10. 18:44반응형
[Equi join]
--Oracle join 문법
SCOTT>SELECT sname "3140|E", pname "X/Em-g"
FROM students, professor pWHERE 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'KIC > DB 오라클' 카테고리의 다른 글