본문 바로가기

SQL

SQLD 시험 대비 - Group By, Join (2)

Join 이란? 테이블 간의 결합, 집합과 유사하다.


교집합

Inner Join

Left Join

Right Join

Outer Join

 

합집합

Union (All)

 

차집합

Minus(oracle) = Except(SQL server)

 

결합되는 대상간의 일치정도

Equi 조인 <> Non-Equi 조인

 

조건구 없는 Cross Join

 


1.Inner Join 

Select table1.*, table2.col1

From table1 A Inner Join table2 B

On A.col1 = B.col1;

==

Select A.table,B.table

From  table1 A, table2 B

Where A.col1 = B.col1

 

Inner Join - Join 후 특정 행만 호출할 때

Select table1.*, table2.col1

From table1 A Inner Join table2 B

On A.col1 = B.col1;

Where A.col2 = "특정 행(Row) 값";

==

Select A.*,B.col2

From  table1 A, table2 B

Where A.col1 = B.col1

And A.col2 =  "특정 행(Row) 값";

 

Inner Join - 3개 이상의 테이블을 Join 할 때

Select A.* B.col2, C col2

From table A Join table B On A.col1= B col1

Join table C On B col2 = C col2;

 


2.Left Join

Select A.*, B.col1

From table1 A Left Join table2 B

On A.col1 = B.col1;

== 

Select A.* B col1

From table1 A, table2 B

Where A.col1 = B.col1 (+)

*(+) = 해당 테이블 속성값에 대해 NULL을 허용한다.

 

3. Right Join

Select A.*, B.col1

From table1 A Right Join table2 B

On A.col1 = B.col1;

== 

Select A.* B col1

From table1 A, table2 B

Where A.col1 = B.col1 (+)

**(+) = 해당 테이블 속성값에 대해 NULL 을 허용한다.

 

4. Outer Join

Select A.*, B.col1

From table1 A Full Outer Join table2 B

On A.col1 = B.col1;

==

Select A.* B col1

From table1 A, table2 B

Where A.col1(+) = B.col1 (+)

***(+) = 해당 테이블 속성값에 대해 NULL 을 허용한다.

>> Oracle 9부터 양쪽 (+) 가능

 

5. Union, Union ALL

동일한 칼럼개수와 데이터 타입을 가진 두 테이블에서만 합쳐지고 사용가능하다.

Select * From q1

Union

Select * From q2;

중복된 레코드 제거되고 합쳐진다.

 

Select * From q1

Union ALL

Select * From q2;

중복된 레코드 제거 안되고 합쳐진다.

 

 

반응형