---------------------------------------------------------------------------------------------------------------
참고 :
http://kokun.tistory.com/entry/MSSQL-CROSS-JOIN-%EC%83%81%ED%98%B8-%EC%A1%B0%EC%9D%B8
---------------------------------------------------------------------------------------------------------------
* Join은 두개 이상의 테이블에서 원하는 정보를 얻을때 사용하는 방법입니다.
* Table 설명
- Employee : 사원 정보를 저장하는 테이블
- RankInfo : 사원의 직급 정보를 저장하는 테이블
1. CROSS JOIN 쿼리
---------------------------------------------------------------------------------------------------------------
select * from Employee CROSS JOIN RankInfo;
---------------------------------------------------------------------------------------------------------------
- Employee 테이블의 모든 값과 RankInfo 테이블의 모든 값이 합쳐져 보여주는 쿼리 입니다.
- CROSS JOIN에서는 ON 구문을 사용하라 수 없습니다. 용도는 테스트로 사용할 많은 용량의 데이터를 생성할 때 주로 사용합니다.
- 데이터의 개수는 테이블1의 열수 X 테이블2의 열수 입니다.
2. INNER JOIN 쿼리
---------------------------------------------------------------------------------------------------------------
select * from Employee A INNER JOIN RankInfo B on A.[Rank] = B.No;
---------------------------------------------------------------------------------------------------------------
- Employee Table과 RankInfo Table의 서로 교집합 부분을 보여줍니다.
3. LEFT OUTER JOIN
쿼리 1 : Employee 기준
---------------------------------------------------------------------------------------------------------------
select * from Employee E Left outer join RankInfo R on E.[Rank] = R.No;
---------------------------------------------------------------------------------------------------------------
- Employee 테이블의 Rank값 기준으로 Rank 테이블의 Rank를 매칭 시켜서 조회
- Left 키워드는 왼쪽에 오는 테이블을 기준으로 삼는다는 의미.
쿼리 2 : RankInfo 기준
---------------------------------------------------------------------------------------------------------------
select * from RankInfo R Left outer join Employee E on E.[Rank] = R.No;
---------------------------------------------------------------------------------------------------------------
- RankInfo 테이블을 기준으로 Rank값을 찾았는데, Employee인포엔 Rank값이 2인 주임이 없어서 null 값 발생.
4. RIGHT OUTER JOIN
쿼리 1 : RankInfo 기준
---------------------------------------------------------------------------------------------------------------
select * from Employee E Right outer join RankInfo R on E.[Rank] = R.No;---------------------------------------------------------------------------------------------------------------
- Right outer join은 오른쪽에 있는 table 기준으로 join한다.
- 그래서 RankInfo에는 있는 no - 2, name - 주임이 Employee에는 없어서 null을 보여준다.
쿼리 2 : Employee 기준
---------------------------------------------------------------------------------------------------------------
select * from RankInfo R Right outer join Employee E on E.[Rank] = R.No;
---------------------------------------------------------------------------------------------------------------
5. FULL OUTER JOIN
- 조합이 가능한 모든 키를 매칭해서 보여줍니다.
- 매칭이 되지 않는 값은 null을 보여 줍니다.
- left, right outer join을 실행한후 중복되는 값(inner join)을 제거한 값을 표시합니다.
---------------------------------------------------------------------------------------------------------------
select * from Employee E Full outer join RankInfo R on E.[Rank] = R.No;
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
select * from RankInfo R Full outer join Employee E on E.[Rank] = R.No;
---------------------------------------------------------------------------------------------------------------
'프로그래밍 > DB & Redis' 카테고리의 다른 글
시퀀스 (0) | 2016.07.20 |
---|---|
[MSSQL] isNull 함수 (0) | 2016.07.20 |
[sql] sql error 26번 에러 (0) | 2015.10.25 |
[DB] CHAR와 VARCHAR 비교 (0) | 2015.08.31 |
저장 프로시저 or 스토어드 프로시저 (0) | 2015.08.25 |
댓글