Day35 :) 조인(join)

Nux·2021년 10월 26일
0

자바웹개발

목록 보기
36/105
post-thumbnail

조인

  • 두 개 이상의 테이블을 연결지어서 데이터를 조회하는 것
  • 그림과 같이 서로 연관있는 행을 연결하여 새로운 가상 테이블을 만들어서 사용 할 수 있음

교차조인(카티션곱, CROSS JOIN)

SELECT 테이블1.컬럼명, 테이블1.컬럼명, 테이블2.컬럼명, 테이블2.컬럼명, ...
FROM 테이블1, 테이블2
  • join 조건 없이 각 테이블의 모든 행을 붙이는 것
  • 테이블N의 행 수 x 테이블M의 행 수만큼의 데이터가 출력됨

등가조인(EQUI JOIN)

SELECT 테이블1.컬럼명, 테이블1.컬럼명, 테이블2.컬럼명, 테이블2.컬럼명, ...
FROM 테이블1, 테이블2
WHERE 테이블1.컬럼=테이블2.컬럼;
  • 보편적으로 사용되는 조인방법
  • 두 개 이상의 테이블의 공통된 데이터를 갖는 컬럼을 연결하여 결과를 검색
  • WHERE절에 두 테이블의 겹치는 컬럼을 적어 컬럼을 연결함
SELECT E.EMPLOYEE_ID, J.JOB_TITLE, D.DEPARTMENT_NAME
FROM EMPLOYEES E, JOBS J, DEPARTMENTS D
WHERE E.JOB_ID = J.JOB_ID
AND E.DEPARTMENT_ID = D.DEPARTMENT_ID;
  • FROM절에 테이블명을 적고 별칭을 적어서 명령어를 간략히 함
  • AND 키워드로 여러 테이블/컬럼 조인 가능
  • 컬럼의 이름이 달라도 조인 가능

비등가조인(NON-EQUI JOIN)

  • 테이블 간 일치하는 컬럼은 없지만, 일정 범위 조건을 만족할때 비교연산자를 이용한 조인방법
    • <, >, BETWEEN a AND b 등, '='가 아닌 연산자 사용
  • 주로 등급과 관련된 테이블에서 많이 쓰임
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.SALARY, S.GRADE
FROM EMPLOYEE.E, SALARY_GRADE S
WHERE E.SALARY >= S.MIN_SALARY
AND E.SALARY <= S.MAX_SALARY;

셀프조인(SELF JOIN)

  • 하나의 테이블 안에서 조인을 구성하는 것
  • 상위데이터-하위데이터를 서로 연관지어 조회할 때 사용
    • 상사-부하직원 정보
    • 같은 부서에서 일하는 직원 조회
SELECT 사원.ename, 상사.ename
FROM EMP 사원, EMP 상사
WHERE 사원.mgr=상사.empno;
-- mgr: 상사ID, empno: 본인ID
  • 같은 테이블을 이용하더라도 컬럼이 중복 될 경우, 테이블을 한번 더 불러와야함
FROM EMPLOYEES EMP, EMPLOYEES MGR, SALARY_GRADE S1, SALARY_GRADE S2

포괄조인(OUTER JOIN)

  • 데이터가 한쪽은 있고 한쪽은 없는 경우(NULL), 있는 쪽 기준으로 데이터를 조회하는 JOIN방법
  • 처리속도가 늦어지므로 되도록 덜 쓰는 편이 좋음
SELECT L.COUNTRY_ID, L.UNITS, R.COUNTRY
FROM LEFT_TABLE L, RIGHT_TABLE R
WHERE L.COUNTRY_ID(+) = R.ID
-- 데이터가 없는 쪽에 (+) 기호를 붙여 포괄조인을 실행함

0개의 댓글