조인

관계형 데이터베이스에서 SQL을 이용해 관계를 맺는 방법이다.

조인에는 내부조인외부조인, ANSI조인등이 있다.

 

내부조인

동등조인 조건절에서 등호(=) 연산자를 사용해 2개 이상의 테이블뷰를 연결한 조인이다.

(WHERE 절 안의 등호(=) )

         WHERE 테이블1의 컬럼 테이블2의 컬럼

세미조인 서브쿼리를 사용해 서브 쿼리에 존재하는 데이터만 메인 쿼리에서 추출하는 방법이다.

                동등조인과 비슷해보이지만 중복을 제거하는 효과를 가지고있다.

       (WHERE절 안의 IN, EXIST)

안티조인 서브 쿼리에 존재하지 않는 데이터만 메인 쿼리에서 추출하는 방법.

                세미조인과 반대되는 개념이다역시 중복처리가 된다.

                (WHERE 절 안의 NOT IN, NOT EXISTS)

셀프조인 한테이블을 사용해 조인하는 방법.

 

외부조인

MERGE랑 비슷한 구조인데 조인 조건에 만족하는 데이터 외에 조건에 명시된 컬럼에 갑싱 없거나 데이터가 아예없더라도 추출하는 조인 방법이다.

WHERE 절에서 외부조인으로 설정할 컬럼뒤에 ‘ (+) ‘ 를 붙여 외부조인이란 것을 명시하여 사용한다.

외부조인을 사용할 경우 조건에 해당하는 모든 것에 외부조인마크를 붙여야한다.

·      조인 대상 테이블 중 데이터가 없는 테이블 조인 조건에 (+)를 붙인다

·      외부 조인의 조인 조건이 여러 개일 때 모든 조건에 (+)를 붙인다

·      한번에 한 테이블에만 외부 조인을 할 수 있다.

·      (+)연산자가 붙은 조건과 OR,IN 연산자를 같이 사용 할 수 없다.(IN은 결과가 1개일땐 가능함)

 

크로스(카타시안조인

WHERE 절에 조인 조건을 안넣는 조인으로 조인이 없기 때문에 테이블 * 테이블행의 결과값이 나온다.

 


안시(ANSI) 조인

ANSI SQL 문법에서 사용한 조인을 오라클에서 변환해서 사용하는 것이다.

WHERE에서 조인하는 것이 아닌 FROM 절에서 조인한다.

 

내부조인

FROM 

INNER JOIN 테이블,뷰 이름 ON (조인 조건)

    (조인조건에 쓰인 컬럼 이름이 동일 할 경우 ON대신에 USING으로 바꾸고 테이블명 빼도 됨)

WHERE 

 

외부조인

FROM 테이블1

LEFT(RIGHT) [OUTER] JOIN 테이블2 ON (조인 조건)

         기준 테이블이 왼쪽에있으면 LEFT 오른쪽에있으면 RIGHT를 붙이면된다 OUTER생략가능

WHERE

 

크로스(카타시안)조인

FROM 테이블1

CROSS JOIN 테이블 2;


FULL OUTER조인

외부 조인은 한쪽을 대상으로 빈곳도 그대로 출력했는데 FULL OUTER는 두개다 외부 조인을 적용하는 것이다.

FROM 테이블1

FULL OUTER JOIN 테이블2 ON 조인조건

+ Recent posts