앎을 경계하기

Programming/Certificate

정보처리기사 실기 SQL(2) - JOIN

양갱맨 2019. 4. 7. 17:30

DML에서 데이터를 검색할 때 JOIN을 사용해서 여러 테이블을 합쳐서 하나의 결과를 보여줄 수 있다.

<CROSS JOIN> = 카티션 프로덕트

SELECT * FROM 테이블1, 테이블2;  
SELECT * FROM 테이블1 CROSS JOIN 테이블2;

 

<INNER JOIN> = 일반적인 JOIN

SELECT * FROM 테이블1, 테이블2 WHERE 테이블1.속성=테이블2.속성;
SELECT * FROM 테이블1 INNER JOIN 테이블2 ON 테이블1.속성=테이블2.속성;
SELECT * FROM 테이블1 JOIN 테이블2 USING 테이블1.속성=테이블2.속성; //윗줄 INNER 생략이 가능함.
SELECT * FROM 테이블1 NATURAL JOIN 테이블2;

 

<OUTER JOIN> 외부조인 = 조건에 해당하지 않는 컬럼값도 NULL을 대입하여 결과값에 포함한다.

LEFT OUTER JOIN

* 테이블2에 맞지 않는 테이블1 튜플에 NULL대입해서 출력
SELECT * FROM 테이블1 LEFT OUTER JOIN 테이블2 ON 테이블1.속성=테이블2.속성
SELECT * FROM 테이블 1 WHERE 테이블1.속성=테이블2.속성(+);

RIGHT OUTER JOIN

* 테이블1에 맞지 않는 테이블 2 튜플에 NULL 대입해서 출력
SELECT * FROM 테이블 1 RIGHT OUTER JOIN 테이블2 ON 테이블1.속성=테이블2.속성;
SELECT * FROM 테이블 1 WHERE 테이블1.속성(+)=테이블2.속성;

FULL OUTER JOIN = UNION과 같다.

* 양쪽 릴레이션 튜플 모두 출력
SELECT * FROM 테이블1 FULL OUTER JOIN 테이블2 ON 테이블1.속성 = 테이블2.속성

 

<SELF JOIN> 데이터가 한 테이블 안에 다 있을 때 사용.

SELETE * FROM 테이블1 AS A JOIN 테이블1 AS B ON A.속성 = B.속성;