Presentation is loading. Please wait.

Presentation is loading. Please wait.

7장 조인.

Similar presentations


Presentation on theme: "7장 조인."— Presentation transcript:

1 7장 조인

2 목 차 EQUI JOIN 컬럼 명의 모호성 해결 테이블명에 별칭 부여 EQUI JOIN에 AND 연산을 추가하여 검색
NON-EQUI JOIN SELF JOIN OUTER JOIN 예제

3 조인의 기본 개념 조인 : 원하는 정보가 하나의 테이블에 없을때 두 개이상의 테이블에서 정보를 얻음
사원번호가 7900인 사원의 이름, 부서명 조회 SQL> SELECT * FROM  emp; SQL> SELECT * FROM  dept; SQL> SELECT empno, ename, deptno    2  FROM  emp    3  WHERE empno = 7900; SQL> SELECT dname    2  FROM  dept    3  WHERE deptno = 30;

4 EQUI JOIN Equi join : 공통으로 존재하는 컬럼이 같은 값을 가질 때 결합

5 EQUI JOIN 사원명과 부서명 조회 SQL> SELECT ename, dname 2 FROM emp, dept
   3  WHERE emp.deptno = dept.deptno;

6 컬럼 명의 모호성 해결 SQL> SELECT ename, dname, 2 FROM emp, dept
두 테이블에 같은 이름의 컬럼이 존재할 때 테이블명을 앞에 명시해야 함 - 테이블 명.컬럼명 SQL> SELECT ename, dname,    2  FROM  emp, dept    3  WHERE deptno = deptno; Error : 열의 정의가 애매합니다. SQL> SELECT ename, dname, emp.deptno, dept.deptno    2  FROM  emp, dept    3  WHERE emp.deptno = dept.deptno;

7 테이블명에 별칭 부여 SQL> SELECT e.ename, d.dname, e.deptno, d.deptno
테이블명 뒤에 공백을 두고 별칭 부여 SQL> SELECT e.ename, d.dname, e.deptno, d.deptno   2   FROM  emp e, dept d   3   WHERE  e.deptno = d.deptno;

8 EQUI JOIN에 AND 연산을 추가하여 검색
이름이 ‘SCOTT’인 사원의 이름과 부서명 조회 SQL> SELECT ename, dname    2  FROM   emp e, dept d     3  WHERE e.deptno = d.deptno     4  AND    e.ename='SCOTT';

9 NON-EQUI JOIN Non-Equi join : 컬럼이 일정 범위의 값을 가질 때 결합 호봉 테이블 조회
SQL> SELECT * from salgrade; 사원 이름과 급여, 호봉 산출 SQL> SELECT e.ename, e.sal, s.grade   2   FROM emp e, salgrade s   3   WHERE e.sal >= s.losal AND e.sal <= s.hisal; SQL> SELECT e.ename, e.sal, s.grade   2   FROM emp e, salgrade s   3   WHERE e.sal BETWEEN s.losal AND s.hisal;

10 SELF JOIN Self join : 자기자신 테이블과 결합 사원의 이름과 상사의 이름 조회
SQL> SELECT e.ename || ‘의 매니저는 ’ || m.ename || ‘입니다.’   2   FROM emp e, emp m   3   WHERE e.mgr = m.empno;

11 OUTER JOIN Outer join : 조건에 만족하지 않는 행도 나타내도록 하는 결합
SQL> SELECT e.ename || ‘의 매니저는 ’ || m.ename || ‘입니다.’   2   FROM emp e, emp m   3   WHERE e.mgr = m.empno(+); 값이 없는 쪽, Null값이 인쇄되는 쪽에 (+) 기호

12 OUTER JOIN 사원의 이름과 부서명을 조회하시오(부서테이블의 모든 부서 출력)
SQL> SELECT e.ename, d.dname   2   FROM emp e, dept d   3   WHERE e.deptno(+) = d.deptno; 값이 없는 쪽에 (+) 기호 즉, null값이 인쇄되는 쪽

13 예제 1,2 사원의 이름과 부서번호, 부서명 조회 SQL> SELECT e.ename, d.deptno, d.dname
   2  FROM   emp e, dept d     3  WHERE e.deptno = d.deptno;    부서번호가 30인 사원의 이름, 직급, 부서번호, 부서위치 조회 SQL> SELECT e.ename, e.job, e.deptno, d.loc    2  FROM   emp e, dept d     3  WHERE e.deptno = d.deptno 4 and e.deptno=30;   

14 예제 3,4 커미션을 받는 사원의 이름, 커미션, 부서명, 위치 출력
SQL> SELECT e.ename, e.comm, d.dname, d.loc    2  FROM   emp e, dept d    3  WHERE e.deptno = d.deptno 4  and e.comm is not null and e.comm > 0;  and NVL(e.comm, 0) > 0 달라스에서 근무하는 사원의 이름, 직급, 부서번호, 부서이름 출력 SQL> SELECT e.ename, e.job, e.deptno, d.dname    2  FROM   emp e, dept d    3  WHERE e.deptno = d.deptno 4 and d.loc=‘DALLAS’;   

15 예제 5, 6 이름에 ‘A’들어가는 사원의 이름, 부서이름 출력 SQL> SELECT e.ename, d.dname
   2  FROM  emp e, dept d    3  WHERE e.deptno = d.deptno 4 and e.ename like ‘%A%’;    사원이름과 직급, 급여, 호봉 출력 SQL> SELECT e.ename, e.job, e.sal, s.grade   2  FROM emp e, salgrade s   3  WHERE e.sal BETWEEN s.losal AND s.hisal;

16 예제 7 사원명, 부서번호, 해당사원과 같은 부서에서 근무하는 사원 출력
SQL> SELECT e.ename“자신’,e.deptno, c.ename“동료”, c.deptno    2  FROM   emp e, emp c    3  WHERE e.ename <> c.ename 4 and e.deptno=c.deptno 5 ORDER BY e.ename;   


Download ppt "7장 조인."

Similar presentations


Ads by Google