티스토리 뷰

카테고리 없음

MSSQL - Join

행복한소식까치 2019. 11. 29. 12:10
반응형

 Join 은 수학의 집합 개념을 생각하면 이해가 쉽습니다.

 합집합(Full Join): 집합A와 집합B중 적어도 하나의 집합에 속하는 원소들의 모임.
 교집합(Join) : A와 B 모두에 속하는 원소들의 모임.
 차집합 : 집합A와 집합B중 집합A에 속하지 않은 원소

 

 

Join 하기 위한 샘플 Data 생성 작업

* ATable에 Key_ID 1~10 등록
* BTable에 Key_ID가 짝수인것만 등록
* 쿼리 확인용으로 BTable에 Key_ID 9 등록

Create Table ATable ( Key_ID int,	Key_Nm Varchar(10));
go
Create Table BTable ( Key_ID int,	Key_Nm Varchar(10));
go

Insert into ATable(Key_ID, Key_Nm) values(1, '1Nm');
Insert into ATable(Key_ID, Key_Nm) values(2, '2Nm');
Insert into ATable(Key_ID, Key_Nm) values(3, '3Nm');
Insert into ATable(Key_ID, Key_Nm) values(4, '4Nm');
Insert into ATable(Key_ID, Key_Nm) values(5, '5Nm');
Insert into ATable(Key_ID, Key_Nm) values(6, '6Nm');
Insert into ATable(Key_ID, Key_Nm) values(7, '7Nm');
Insert into ATable(Key_ID, Key_Nm) values(8, '8Nm');

Insert into BTable(Key_ID, Key_Nm) values(9, '8Nm');

Insert into BTable
select *
  From ATable
where key_ID%2 = 0

 

 

Inner Join (교집합) 

정의 :  A와 B 모두에 속하는 원소들의 모임. 

Select A.Key_ID, A.Key_Nm, B.Key_ID, B.Key_Nm
  From ATable A Inner Join BTable B
    on A.Key_ID = B.Key_ID

-- 아래와 같이 inner Join 시 inner 는 생략가능
Select A.Key_ID, A.Key_Nm, B.Key_ID, B.Key_Nm
  From ATable A Join BTable B
    on A.Key_ID = B.Key_ID

 

 

Left Outer Join 

정의 : 왼쪽 Table의 전체 Data 출력

Select A.Key_ID, A.Key_Nm, B.Key_ID, B.Key_Nm
  From ATable A Left Outer Join BTable B
    on A.Key_ID = B.Key_ID

-- Outer 생략가능
Select A.Key_ID, A.Key_Nm, B.Key_ID, B.Key_Nm
  From ATable A Left Join BTable B
    on A.Key_ID = B.Key_ID

 

Right Outer Join

정의 : 오른쪽 Table의 전체 Data 출력

-- Outer 생략가능
Select A.Key_ID, A.Key_Nm, B.Key_ID, B.Key_Nm
  From ATable A Right Join BTable B
    on A.Key_ID = B.Key_ID

 

응용 (차집합)

정의 : ATable의 Data 와 BTable중 Data 중 ATable에만 있는 Data

-- 왼쪽에Table에만 있는 값 
Select A.Key_ID, A.Key_Nm, B.Key_ID, B.Key_Nm
  From ATable A Left Join BTable B
    on A.Key_ID = B.Key_ID
 Where B.Key_ID is null

-- 오른쪽Table에만 있는 값
Select A.Key_ID, A.Key_Nm, B.Key_ID, B.Key_Nm
  From ATable A Right Join BTable B
    on A.Key_ID = B.Key_ID
 Where A.Key_ID is null

 

Full Outer Join(합집합)

정의 : ATable 또는 BTable 에 있는 Data

 Select A.Key_ID, A.Key_Nm, B.Key_ID, B.Key_Nm
  From ATable A Full Outer Join BTable B
    on A.Key_ID = B.Key_ID

 

응용

내용 : 교집합을 제외한 나머지 Data 조회

 Select A.Key_ID, A.Key_Nm, B.Key_ID, B.Key_Nm
  From ATable A Full Join BTable B
    on A.Key_ID = B.Key_ID
  Where A.Key_ID is null or B.Key_ID is null

 

정리

전체 소스 파일

MSSQL_Lectue03- Join.sql
0.00MB

반응형
댓글