반응형

 

1. JOIN

  • 하나 이상의 테이블로부터 연관된 데이터를 검색해오는 방법입니다.

  • Inner-Join : 가장 많이 쓰이는 JOIN, 줄여서 JOIN으로 부릅니다.

  •  두 테이블을 합친다. 합치는 조건은 on절에서 기술합니다.

 

1
2
3
4
5
6
SELECT 컬럼명
FROM 테이블명
    INNER JOIN 두번째테이블명
        ON 연결할 조건
-- ON 어떤 컬럼을 연결할 것이냐를 설정
 

 

 

dept테이블에서 deptno에 대한 정보를 가져와서 emp테이블에 출력하기

 

1
2
3
4
5
SELECT *
FROM emp
    INNER JOIN dept
        ON emp.deptno = dept.deptno;
 

 

 

 

RDBMS의 내부적인 작업순서

  1. emp 테이블에서 정보를 가져옵니다.
  2. ON 절의 조건을 만족하는 dept테이블의 정보를 가져옵니다.
  3. 두 정보를 연결 JOIN 을 합니다.

 

JOIN할 때에는 필요한 컬럼만 표시합니다.

별칭을 주어서 해당 컬럼이 어디 소속인지 표시하는 것이 가독성에 좋습니다.

 

1
2
3
4
5
SELECT E.empno, E.ename, E.job, E.mgr, E.hiredate, E.sal, E.comm, D.dname, D.loc
FROM emp AS E
    INNER JOIN dept AS D
        ON E.deptno = D.deptno;
 

 

실행화면

 

 

INNER JOIN을 아래 코드 방법처럼 조건절로 표현해도 결과는 동일합니다.

1
2
3
SELECT E.empno, E.ename, E.job, E.mgr, E.hiredate, E.sal, E.comm, D.dname, D.loc
FROM emp AS E, dept AS D
WHERE E.deptno = D.deptno;

 

 

CROSS JOIN

  • 두 개 이상의 테이블을 모든 관계를 맺어줍니다. (어거지로 엮어주어버립니다)
  • 다른 말로 CARTESIAN JOIN이라고 부릅니다. 하지만 INNER JOIN을 많이 쓰이긴 합니다.
  • 각 테이블의 튜플의 갯수의 곱이 CROSS JOIN의 결과물의 튜플의 수와 일치합니다. 왜냐하면 모든 관계를 출력하기 때문입니다.
1
2
3
SELECT *
FROM emp
CROSS JOIN dept;

 

 

 

INNER JOIN의 특징

JOIN할 테이블의 순서를 바꾸어도 결과는 똑같습니다.

JOIN할 속성이 없는 데이터는 조회가 되지 않습니다.

1
2
3
4
SELECT *
FROM dept
    INNER JOIN emp
        ON emp.DEPTNO = dept.DEPTNO;

 

유용하게 활용 되는 예

주소록, 회원명부

조인으로 연결해서 사번, 사원명, 부서이름, 지역을 조회하기

1
2
3
4
SELECT E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME
FROM emp AS E
    INNER JOIN dept AS D
        ON E.DEPTNO = D.DEPTNO;

 

 

 

 

다중 조인하기

학생이름, 주소, 동아리명 다중 조인해봅시다.

 

1
2
3
4
5
6
7
SELECT S.stdName, S.addr, SC.clubname, C.roomNo
FROM stdtbl AS S
    INNER JOIN stdclubtbl AS SC
        ON S.stdName = SC.stdName
    INNER JOIN clubtbl AS C
        ON SC.clubname = C.clubname
ORDER BY S.stdname;

 

 

실행 화면

 

반응형

'데이터베이스' 카테고리의 다른 글

서브쿼리  (0) 2019.04.12