개발/Database

MSSQL Join Union 10초만에 그림보고 쉽게 이해

재근이 2021. 10. 14. 23:35
반응형

🚀여기서 알아볼 내용

JoinUnion(Union All)에 대해서 쉽게! 이해하자.

  • JoinUnion의 차이점을 그림을 통해 쉽게 이해할 수 있다.
  • UnionUnion All차이점을 금방 이해할 수 있다.
  • Inner Join, Left Outer Join, Right Outer Join, Cross Join정확히 구분할 수 있다.

🤼‍♂️Join과 Union의 공통점과 차이점

  • 공통점 - 테이블의 데이터를 연결
  • 차이점 - 연결하는 방법이 다름

 

🧷결합되는 방식

Join은 테이블의 Column이 추가되는 형식으로 데이터가 옆으로 연결됨
Union 데이터가 추가되는 형식으로 아래에 연결됨

결합되는 방식의 차이점을 그림으로 어떻게 연결되는지 확인해보자.

🎨Join의 결합 방식을 그림으로 표현

Join의 결합방식

🎨Union의 결합 방식을 그림으로 표현

Union의 결합 방식


🤼‍♂️UnionUnion All의 차이점 및 사용법

Union : 중복 데이터 값 삭제하고 연결
Union All : 중복되는 값 모두 연결

📑사용법

연결하고자 하는 Column개수와 타입이 같아야 연결할 수 있습니다.

-- 포맷:
-- SELECT * FROM [테이블 이름 1]
-- UNION/UNION All
-- SELECT * FROM [테이블 이름 2]

SELECT * FROM Table1 UNION SELECT * FROM Table2
SELECT * FROM Table1 UNION ALL SELECT * FROM Table2

🔗Inner Join, Left Outer Join, Right Outer Join, Cross Join

✅INNER JOIN  교집합적인 데이터만 연결시켜주고 나머지는 버린다

Inner Join 방식

-- 포맷:
-- SELECT [별칭.필드1], [별칭.필드2]... FROM [Table 이름] AS [별칭] INNER JOIN [Table 이름] AS [별칭] ON [조건]
SELECT a.myAge, a.myName, b.myId FROM mytable AS a INNER JOIN testtable AS b on a.myname = b.myname

 

LEFT OUTER JOIN ➡ 왼쪽은 모두 연결   오른쪽 교집합 부분만 연결한다.

Left outer Join 방식

-- 포맷:
-- SELECT [별칭.필드1], [별칭.필드2]... FROM [Table 이름] AS [별칭] LEFT OUTER JOIN [Table 이름] AS [별칭] ON [조건]
SELECT a.myAge, a.myName, b.myId FROM mytable AS a LEFT OUTER JOIN testtable AS b on a.myname = b.myname

RIGHT OUTER JOIN  오른쪽 모두 연결   왼쪽 교집합 부분만 연결한다.

Right Outer Join 방식

-- 포맷:
-- SELECT [별칭.필드1], [별칭.필드2]... FROM [Table 이름] AS [별칭] LEFT OUTER JOIN [Table 이름] AS [별칭] ON [조건]
SELECT a.myAge, a.myName, b.myId FROM mytable AS a RIGHT OUTER JOIN testtable AS b on a.myname = b.myname

 

CROSS JOIN  두 데이터의 모든 경우의 수

Cross Join

-- 포맷:
-- SELECT [별칭.필드1], [별칭.필드2]... FROM [Table 이름] AS [별칭] CROSS JOIN [Table 이름] AS [별칭]
SELECT a.myAge, a.myName, b.myId FROM mytable AS a CROSS JOIN testtable AS b

-- SELECT [별칭.필드1], [별칭.필드2]... FROM [Table 이름] AS [별칭], [Table 이름] AS [별칭]
-- CROSS JOIN 대신 ,(콤마) 로도 가능
SELECT a.myAge, a.myName, b.myId FROM mytable AS a, testtable AS b

반응형