JOIN?
관계형 데이터베이스에서 서로 관계있는 데이터가 여러 테이블로 나뉘어 저장되어 있는데, 각 테이블에 저장된 데이터를 효과적으로 검색하기 위해 조인을 사용한다.
조인에는 내부 조인이랑 외부 조인이 있다.
INNER JOIN
내부 조인은 둘 이상의 테이블에 존재하는 공통 속성의 값이 같은 것을 결과로 추출한다. 내부조인에는 동등 조인, 자연 조인, 교차 조인, 셀프 조인이 있다.
1. 동등 조인(EQUI JOIN)
둘 이상의 테이블에 존재하는 공통 속성을 비교하여 출력한다.
SELECT *
FROM emp INNER JOIN dept
ON emp.deptno = dept.deptno
2. 자연 조인(NATURAL JOIN)
조인 대상 테이블의 모든 속성을 비교하여, 공통 속성을 가진 속성으로 조인을 수행한다. 같은 이름을 가진 속성은 한 번만 나타난다.
SELECT *
FROM emp NATURAL JOIN dept
3. 교차 조인(CROSS JOIN)
교차 조인은 카티션 프로덕트로 불리며, 조인에 참여한 모든 데이터가 나타난다.
1) JOIN 조건을 잘못 기술했을 때
2) JOIN 조건을 정의하지 않았을 때
3) JOIN 조건이 JOIN 조건에 참여하는 테이블의 모든 행이 JOIN되는 경우
위와 같은 상황이면 교차 조인이 발생한다.
그래서 조인을 수행 한 뒤, 결과를 확인 해봐야한다.
SELECT *
FROM emp CROSS JOIN dept
4. 셀프 조인(SELF JOIN)
셀프 조인은 EMP 테이블에 사원 정보와 관리자 정보를 함께 보고 싶을 때, 사용한다.
SELECT e.empno, e.ename, m.empno, m.ename
FROM emp E INNER JOIN emp M
ON E.mgr = M.empno
OUTER JOIN
외부 조인은 특정 테이블의 데이터를 모두 포함하는 조인이다. 외부 조인에는 왼쪽 외부 조인, 오른쪽 외부 조인, 완전 외부 조인이 있다.
1. 왼쪽 외부 조인(LEFT OUTER JOIN)
위와 같이 왼쪽의 데이터를 모두 포함하고 있다.
SELECT *
FROM emp
LEFT OUTER JOIN dept
ON emp.deptno = dept.deptno
2. 오른쪽 외부 조인(RIGHT OUTER JOIN)
위와 같이 오른쪽의 데이터를 모두 포함하고 있다.
SELECT *
FROM emp
RIGHT OUTER JOIN dept
ON emp.deptno = dept.deptno
3. 완전 외부 조인(FULL OUTER JOIN)
SELECT *
FROM emp
FULL OUTER JOIN dept
ON emp.deptno = dept.deptno
JOIN 사용 시 주의 사항
1. SQL 문장의 의미를 제대로 파악
-> 성능이 크게 좌우 된다.
2. 조인 조건을 명확하게 제공
-> CROSS JOIN이 발생 할 수 있다.
3. 조인 적용 후 테스트를 수행
-> 여러 개 테이블을 조인 할시 예상 못한 결과를 얻을수 있으니, 테스트를 습관 시해야 한다.
JOIN 사용 시 고려 사항
조인은 생각보다 많은 자원을 소비한다. 그래서 JOIN 사용 시 고려 해야 할 것이 있다.
1. 조인 대상의 양을 최소화
-> 조인 할 집합에 먼저 조건을 걸 수 있으면 조건을 적용하여 조인의 양을 최소화한다.
2. 인덱스의 활용
-> 조인 연산의 비용을 낮출 수 있음
'전공 > 데이터베이스' 카테고리의 다른 글
UNDO와 REDO (0) | 2018.06.14 |
---|---|
UNION과 UNION ALL (0) | 2018.06.11 |
DB정규화 (0) | 2018.05.17 |
트랜잭션 (0) | 2018.05.04 |
SQL 인젝션 (0) | 2017.11.24 |