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를 이용해 조인한다.
'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 |