1 / 16

7 장 조인

7 장 조인. 목 차. EQUI JOIN 컬럼 명의 모호성 해결 테이블명에 별칭 부여 EQUI JOIN 에 AND 연산을 추가하여 검색 NON-EQUI JOIN SELF JOIN OUTER JOIN 예제. 조인의 기본 개념. 조인 : 원하는 정보가 하나의 테이블에 없을때 두 개이상의 테이블에서 정보를 얻음. 사원번호가 7900 인 사원의 이름 , 부서명 조회 SQL> SELECT * FROM emp; SQL> SELECT * FROM dept;

jania
Download Presentation

7 장 조인

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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

  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;

More Related