외부 조인의 가장 중요한 의미는 출력 데이터의 신뢰성 제공
[Self Join] 자기 참조 조인
; emp 사원을 관리하는 관리자
ex) 김연아 사원의 관리자(사수) -0301 이승철
1) 각 사원을 관리하는 관리자의 이름을 검색하세요
e1 : 사원테이블
e2 : 관리자 테이블
SELECT e1.eno 사번, e1.ename 사원명, e1.mgr 관리자사번, e2.eno 관리자사번, e2.ename 관리자명
FROM emp e1, emp e2
WHERE e1.mgr = e2.eno; --사원테이블의 관리자 = 관리자테이블의 누구
-- 사원의 관리자 = 관리자 사번
[Outer Join - 외부조인]
2) 각 부서별로 사원을 검색한다
일반 조인
SELECT d.dno 부서번호, dname 부서명, ename 사원명
FROM dept d, emp e
WHERE d.dno=e.dno
ORDER BY 1;
외부 조인
ex) 부서는 존재하나 소속 부서원이 없는 경우
일반조인 : 부서가 나타나지 x
외부조인 : 소속 부서원이 없는 부서도 표시됨.
(+)는 데이터가 부족한 컬럼에 적어줘야 함.
의 의미 : 빈공간 (null)값이라도 추가하라...
; 외부 조인의 가장 중요한 의미는 출력 데이터의 신뢰성 제공!
양쪽의 데이터가 일치하지 않을 때 외부조인을 통해 모두 표현하므로 업무 상 신뢰를 높일 수 있음
SELECT d.dno 부서번호, dname 부서명, ename 사원명
FROM dept d, emp e
WHERE d.dno=e.dno(+) --부족한 부분에 더해준다. // 부서원이 없는 부서도 나온다. 빈공간(null)을 증가
ORDER BY 1;
연습문제
1) 학생중에 동명이인을 검색한다
SELECT s.sno 학번, s.sname 이름, ss.sno 학번, ss.sname 이름
FROM student s, student ss
WHERE s.sname = ss.sname AND s.sno!=ss.sno;
2) 전체 교수 명단과 교수가 담당하는 과목의 이름을 학과 순으로 검색한다
SELECT section 학과, p.pno 교수번호, pname 교수이름, cname
FROM professor p, course c
WHERE p.pno=c.pno(+)
ORDER BY section;
3) 이번 학기 등록된 모드 과목과 담당 교수의 학점 순으로 검색한다
SELECT cno 수업번호, cname 수업이름, st_num 학점, p.pno 교수번호, pname 교수이름
FROM professor p, course c
WHERE p.pno(+)=c.pno
ORDER BY 3, 1;
'DB > Oracle SQL Developer' 카테고리의 다른 글
<21, 22> JOIN ~ON 절 / 좌우 외부 조인 (Left Right Outer Join) (0) | 2020.12.02 |
---|---|
<19, 20> Natural Join / Using Join (0) | 2020.12.02 |
<15, 16> JOIN : 등가조인, 비등가조인, 잘못된 조인(Cross Join) (0) | 2020.12.02 |
<11, 12 , 13, 14> 관계연산자 AND, OR / LIKE / BETWEEN, IN (0) | 2020.12.02 |
<1 ~ 10 > Oracle SQL 기초 ~ WHERE 절 (0) | 2020.12.02 |
댓글