학습목표
1. 자기참조 조인을 학습한다.
2. 외부 조인을 학습한다.
part 1. 자기참조 조인을 학습한다.
자기 참조 조인(Self join)
‐ 동일 테이블을 자기 참조에 의해 조인한다.
‐ 별명1과 별명2는 동일 테이블에 대한 별명이지만 각각 별도의 테이블처럼 사용한다.
‐ 하나의 테이블에 별명을 다르게 해서 마치 여러 개의 테이블간 조인하는 것처럼 문장을 구현한다.
Self join
• 각 사원과 이를 관리하는 사원의 정보를 검색한다.
‐ e1, e2 테이블간 등가 조인
‐ e1 : 사원 테이블, e2 : 관리자 테이블
part 2. 외부 조인을 학습한다.
외부(Outer) 조인
‐ 조인 조건에 일치하는 않는 데이터를 출력해 준다.
‐ 조인 결과물을 해석할 때 오해를 방지하기 위한 방법이다.
.결과의 무결성을 보장한다.
‐ '+' 기호는 데이터가 부족한 쪽에 기술한다.
외부 조인 결과를 비교한다.
• 각 부서별로 사원의 명단을 검색한다.
두 문장을 비교해보면 왼쪽같은 경우에는 21행이 생성되었지만 오른쪽은 emp의 데이터가 더 적은 것을 명시해놔서 데이터가 더 많은 dept TABLE의 모든 dno 정보가 다 나오게 되었다.
실습
1. 학생 중에 동명이인을 검색한다.
SELECT st1.sno, st1.sname, st2.sno, st2.sname
FROM student st1, student st2
WHERE st1.sno!=st2.sno AND st1.sname=st2.sname;
2. 모든 직원의 명단과 이를 관리하는 직원의 명단을 검색한다.
SELECT e1.eno, e1.ename, e1.mgr, e2.eno, e2.ename
FROM emp e1, emp e2
WHERE e1.mgr=e2.eno(+);
3. 직원 중에 자신의 관리자 보다 급여가 높은 사람의 급여 정보를 관리자 급여 정보와 같이 검색 한다.
SELECT e1.eno, e1.ename, e1.mgr, e1.sal, e2.eno, e2.ename, e2.sal
FROM emp e1, emp e2
WHERE e1.mgr=e2.eno AND e1.sal>e2.sal;
4. 전체 교수 명단과 교수가 담당하는 과목의 이름을 학과 순으로 검색한다.
SELECT p.pno, pname, section, cno, cname
FROM professor p, course c
WHERE p.pno=c.pno(+)
ORDER BY section, p.pno;
5. 모든 과목 목록과 각 과목별 담당 교수를 검색한다.
SELECT p.pno, pname, section, cno, cname
FROM professor p, course c
WHERE p.pno(+)=c.pno
ORDER BY section, p.pno;
'SQL' 카테고리의 다른 글
10. SQL- 조인(JOIN)문을 쉽게 작성하기 (0) | 2024.04.24 |
---|---|
09. SQL- 조인(JOIN) 등가 조인과 비등가 조인 (3) | 2024.04.24 |
08. SQL- 다양한 조건 검색(NULL, BETWEEN, IN, LIKE) (2) | 2024.04.23 |
07. SQL- WHERE절을 이용한 조건검색(날짜, 관계 연산자와 부정연산자) (0) | 2024.04.23 |
06. SQL- 정렬을 이용한 자료검색 (4) | 2024.04.22 |
2024. 4. 24. 13:48