'DB'에 해당되는 글 23건

  1. 2009.06.02 Equijoin
  2. 2009.06.02 Non-Equijoin
  3. 2009.06.02 Outer Join

Equijoin

DB 2009. 6. 2. 13:46

Equijoin이란 조인 조건에서 =을 사용하여 값들이 정확하게 일치하는 경우에 사용하는 조인을 말한다.

대부분 PK와 FK의 관계를 이용해서 조인하고 다른 말로 단순 조인 또는 내부 조인 이라고도 한다.


1. Equijoin으로 자료 검색

   1) SELECT절은 검색할 열 이름을 명시.

   2) FROM절은 Access해야 하는 두 개 이상의 테이블을 명시.

   3) WHERE절은 테이블의 조인 조건을 명시.

   4) 양쪽 테이블에 공통으로 존재하는 열 이름은 모호함을 피하기 위하여 열 이름 앞에 테이블명을

       기술해야 한다.

   문제> EMP 테이블에서 사원번호, 이름, 업무, EMP 테이블의 부서번호, DEPT테이블의 부서번호,

            부서명, 근무지를 출력하여라.

            SELECT empno, ename, job, emp.deptno, dept.deptno
             FROM emp, dept
             WHERE dept.deptno = emp.deptno
             ORDER BY dept.deptno


             EMPNO ENAME           JOB                    DEPTNO     DEPTNO
            -------- --------------- ------------------ ---------- ----------
                   7839 KING            PRESIDENT                  10         10
                   7782 CLARK           MANAGER                    10         10
                   7934 MILLER          CLERK                      10         10
                   1111 홍길동                                             10         10
                   7788 SCOTT           ANALYST                    20         20
                   7876 ADAMS           CLERK                      20         20
                   7566 JONES           MANAGER                    20         20
                   7369 SMITH           CLERK                      20         20
                   3311                                                   20         20
                   7902 FORD            ANALYST                    20         20
                   1000 대조영                                     30         30

               EMPNO ENAME           JOB                    DEPTNO     DEPTNO
              -------- --------------- ------------------ ---------- ----------
                    7900 JAMES           CLERK                      30         30
                    7844 TURNER          SALESMAN                   30         30
                   7698 BLAKE           MANAGER                    30         30
                   7654 MARTIN          SALESMAN                   30         30
                   7521 WARD            SALESMAN                   30         30
                   1001 TEST                                               30         30
                   7499 ALLEN           SALESMAN                   30         30


2. Table에 Alias 사용

   테이블 별칭을 사용하여  긴 테이블 명을 간단하게 사용할 수 있다.

   SQL 코드를 적게 사용하여 코딩 시간이 절약되고 메모리를 보다 적게 사용한다.

   SELECT e.empno, e.ename, e.job, e.deptno, d.deptno, d.dname, d.loc

   FROM dept d, emp e  //FROM절에 dept를 d라고 별칭을 만들고, emp를 e라고 별칭을 만들었다.

   WHERE d.deptno = e.deptno

   ORDER BY d.deptno;

   1) 테이블 Alias는 30자까지 사용 가능하지만 짧을수록 좋다.

   2) FROM절에서 Alias가 사용되면 SELECT문 전체에서 사용 가능하다.

   3) 테이블의 Alias에 가급적 의미를 부여하는게 좋다.

   4) 테이블의 Alias는 현재 SELECT 문장에서만 유용하다.


3. WHERE절에 AND 연산자를 사용하여 추가적인 검색 조건을 가질 수 있다.

   SELECT e.empno, e.ename, job, e.sal, d.dname, d.loc
   FROM dept d, emp e
   WHERE d.deptno = e.deptno AND e.job = 'SALESMAN'


   EMPNO ENAME     JOB              SAL DNAME        LOC
   ------- --------- --------- ---------- ------------ --------
        7499 ALLEN     SALESMAN        1600 SALES        CHICAGO


        7521 WARD      SALESMAN        1250 SALES        CHICAGO


        7654 MARTIN    SALESMAN        1250 SALES        CHICAGO


        7844 TURNER    SALESMAN        1500 SALES        CHICAGO


4. 세 개 이상의 테이블 조인

   때로는 세 개 이상의 테이블을 조인할 수도 있다.

   방법은 FROM에는 테이블을 하나 더 적어주면 되고, WHERE절에는 AND를 이용해 조인한다.

[출처] Equijoin|작성자 이경모


'DB' 카테고리의 다른 글

그룹 함수  (0) 2009.06.02
GROUP BY  (0) 2009.06.02
Join  (0) 2009.06.02
Non-Equijoin  (0) 2009.06.02
Outer Join  (0) 2009.06.02
Posted by 으랏차
,

Non-Equijoin

DB 2009. 6. 2. 13:45

테이블 사이에 관련 있는 Column이 있을 때 쓰는 조인을 Equijoin이라고 한다면 , Non-Equijoin은 관련 없는 Column이 있을 때 조인하는 것을 말한다고 이해하면 되겠다.


예를 들어 salgrade 테이블과 emp 테이블을 참조해서 사원번호, 이름, 업무, 급여, 급여의 등급, 상한값, 하한값을 출력한다고 가정하자.

사원번호, 이름, 업무, 급여는 emp테이블에 속해 있고, 급여의 등급, 상한값, 하한값은 salgrade 테이블에 속해 있다.

두 테이블에 공통되는 Column은 없지만 sal이 salgrade의 상한값, 하한값 사이에 속해 있다는 관련성은 있다.

이 때, BETWEEN AND를 사용해서 조인하는데 이렇게 조인하는 것을 Non-Equijoin이라고 한다.


SELECT e.empno, e.ename, e.job, e.sal, s.grade, s.losal, s.hisal
FROM salgrade s, emp e
WHERE e.sal BETWEEN s.losal AND s.hisal AND e.deptno = 10;

//emp테이블의 sal이 salgrade 테이블의 losal과 hisal 사이에 있고 emp테이블의 deptno가 10인

//sal을 검색하는 구문이다.


<=, >= 와 같이 다른 연산자를 사용 가능하나 BETWEEN AND 가장 단순하다.

BETWEEN AND 사용 시 하한값을 먼저 명시하고 상한값을 나중에 명시해야 한다는 점을 명시하자.

[출처] Non-Equijoin|작성자 이경모


'DB' 카테고리의 다른 글

그룹 함수  (0) 2009.06.02
GROUP BY  (0) 2009.06.02
Join  (0) 2009.06.02
Equijoin  (0) 2009.06.02
Outer Join  (0) 2009.06.02
Posted by 으랏차
,

Outer Join

DB 2009. 6. 2. 13:44

A 테이블과 B테이블을 Equijoin한다고 했을 때 공통되는 칼럼의 레코드에서 B테이블의 레코드 중 A테이블에서 검색이 되지 않는 레코드는 SELECT로 나타나지 않는다.

즉, 조인된 B테이블 엄연히 존재함에도 A테이블에 없기 때문에 나타나지 않는 것이다.

이 때, A테이블에 없어도 나타나게 하려고 설정하는 조인을 Outer Join이라고 한다.

예를 들어 emp 테이블에는 부서번호가 10, 20, 30만 존재하는데, 부서의 정보가 들어있는 dept테이블에는 10,20,30뿐만 아니라 40도 있다. 이 두 테이블을 Equipjoin하면 40번은 안나온다는 얘기다.

이럴 때 40번도 나오게 하려는 조인을 Outer Join이라고 하는 것이다.

연산자는 (+)를 쓰며 조인하려는 레코드가 없는 쪽에 (+)를 붙인다.

SELECT e.empno, e.ename, e.job, e.deptno,
d.deptno, d.dname, d.loc
FROM dept d, emp e
WHERE d.deptno = e.deptno(+);

// 40번도 나타나게 하기 위해 40번이 없는 테이블, 즉 emp테이블 쪽에 (+)를 붙인다.


EMPNO ENAME         JOB            DEPTNO  DEPTNO DNAME         LOC
----- ------------- ------------- ------- ------- ------------- --------
 7369 SMITH         CLERK              20      20 RESEARCH      DALLAS
 7499 ALLEN         SALESMAN           30      30 SALES         CHICAGO
 7521 WARD          SALESMAN           30      30 SALES         CHICAGO
 7566 JONES         MANAGER            20      20 RESEARCH      DALLAS
 7654 MARTIN        SALESMAN           30      30 SALES         CHICAGO
 7698 BLAKE         MANAGER            30      30 SALES         CHICAGO
 7782 CLARK         MANAGER            10      10 ACCOUNTING    NEW YORK
 7788 SCOTT         ANALYST            20      20 RESEARCH      DALLAS
 7839 KING          PRESIDENT          10      10 ACCOUNTING    NEW YORK
 7844 TURNER        SALESMAN           30      30 SALES         CHICAGO
 7876 ADAMS         CLERK              20      20 RESEARCH      DALLAS

EMPNO ENAME         JOB            DEPTNO  DEPTNO DNAME         LOC
----- ------------- ------------- ------- ------- ------------- --------
 7900 JAMES         CLERK              30      30 SALES         CHICAGO
 7902 FORD          ANALYST            20      20 RESEARCH      DALLAS
 7934 MILLER        CLERK              10      10 ACCOUNTING    NEW YORK
                                                  40 OPERATIONS    BOSTON

위와 같이 결과가 쭉 출력되고, emp테이블에 없는 40번의 정보는 맨 아래에 출력되었다.

[출처] Outer Join|작성자 이경모


'DB' 카테고리의 다른 글

그룹 함수  (0) 2009.06.02
GROUP BY  (0) 2009.06.02
Join  (0) 2009.06.02
Equijoin  (0) 2009.06.02
Non-Equijoin  (0) 2009.06.02
Posted by 으랏차
,