DBMS/Oracle

D+27 [13. 조인]

구일일구 2022. 8. 30. 17:04
반응형

13. 조인(JOIN)

한 개 이상의 테이블에서 원하는 결과를 얻기 위한 조인을 배움

 

하나의 테이블에 대해 SQL 명령어를 사용하였는데, 관계형 데이터베이스에서는 테이블간의 관계가 중요하다. 그래서 하나 이상의 테이블이 빈번하게 결합되어 사용된다. 한 개 이상의 테이블에서 데이터를 조회하기 위해 사용하는 것이 조인(JOIN)

 


Cross Join

아무런 의미 없이 테이블들을 조합한 것이므로 개발자의 실수로 발생되는 경우가 대부분임

 

Equi Join

가장 많이 사용하는 조인 방법

두 테이블에서 공통적으로 존재하는 칼럼의 값이 일치되는 행을 연결하여 결과를 생성하는 조인 방법

부서 번호가 같은 사원의 이름과 부서 이름을 출력
SELECT E.ENAME, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;

 

Non-Equi Join

조인할 테이블 사이에 칼럽의 값이 직접적으로 일치하지 않을시 사용하는 조이

'='를 제외한 연산자를 사용함 : 대신 BETWEEN - AND 사용

 

Outer Join

행이 조인 조건에 만족하지 않을 경우 그 행은 결과에 나타나지 않음

이때 조인 조건에 만족하지 않는 행들도 나타내기 위해 Outer Join이 사용됨

오라클에서 Outer Join을 사용할 경우 정보가 부족한 칼럽 뒤에 (+)를 붙임

 

Self Join

자기 자신과 조인을 맺는 것

FROM 절 다음에 동일한 테이블 명을 2번 기술 + WHERE 절에 서로 다른 테이블인 것처럼 별칭을 다르게 사용

 

ANSI Join

ANSI(미국표준연구소) SQL은 대부분의 상용 데이터베이스 시스템에서 표준 언어

다른 DBMS와의 호환성을 위해선 ANSI 조인을 사용하는 것이 좋음

 

ANSI Cross Join

이전에는 쉼표(,)로 테이블 명을 구분하였으나 쉼표 대신 CROSS JOIN이라고 명확하게 지정함

 

ANSI Inner Join

이전에는 '='(equal) 연산자를 통해 구분하였으나, 다음과 같은 형식으로 작성

SELECT * FROM table1 INNER JOIN table2
ON table1.column1 = table2.column2

 

USING을 이용한 조인 조건 지정

두 테이블 간의 조인 조건에 사용되는 칼럼이 같다면 ON 대신 USING을 사용할 수 있음

SELECT * FROM table1 INNER JOIN table2
USING (공통칼럼)

 

NATURAL Join

조건 절을 생략하고 NATURAL JOIN을 사용하면 자동적으로 모든 칼럼을 대상으로 공통 칼럼을 조사하여 내부적으로 조인문을 생성

SELECT * FROM table1 NATURAL JOIN table2

 

ANSI Outal Join

기존 조인에서 모든 레코드를 출력할 경우 : (+) 표시 했음

하지만 ANSI 구문의 OUTER JOIN에서는 이전에 지원하지 않았던 FULL까지 지원

SELECT * FROM table1 [LEFT|RIGHT|FULL] OUTER JOIN table2

 

 

반응형