DataBase/MsSql

MSSQL JOIN 종류 설명 및 사용 방법

아우럼 2024. 3. 31. 19:00
반응형

MSSQL Join은 두 개 이상의 테이블을 column으로 연결하여 테이블에 저장된 데이터를 출력할 때 사용합니다.
보통은 성능 향상을 위해서 Primary key 혹은 Foreign key로 두 테이블을 join 합니다.

MSSQL Join 특징

INNER JOIN, LEFT OUTER JOIN 등등 특징을 글로 작성하는 것보다는 집합개념을 넣어서 그림으로 먼저 설명하겠습니다.

mssql join 절에 대한 전체적인 설명 입니다.

MSSQL Join 종류 설명 및 사용법

MSSQL Join INNER JOIN 사용법.

  • 같은 것만 보여주기 때문에 교집합이라고 생각하시면 됩니다.
  • 즉, 중복된 값만 출력할 때 사용합니다.
-- INNER JOIN
SELECT A.EmpID,A.EmpName,A.DeptID,B.DeptID,B.DeptName
FROM UserInfoForJoin A
INNER JOIN DeptInfoForJoin B 
ON A.DeptID = B.DeptID

INNER JOIN 대한 설명 및 예제 입니다.

MSSQL Join LEFT OUTER JOIN 사용법.

  • 왼쪽 테이블을 기준으로 MSSQL Join을 하므로 출력 값은 ta 테이블의 모든 데이터와 ta 테이블과 tb 테이블의 중복되는 data를 검색할 때 사용합니다.
-- LEFT OUTER JOIN
SELECT A.EmpID,A.EmpName,A.DeptID,B.DeptID,B.DeptName
FROM UserInfoForJoin A
LEFT OUTER JOIN DeptInfoForJoin B 
ON A.DeptID = B.DeptID

LEFT OUTER JOIN 대한 설명 및 예제 입니다.

MSSQL Join RIGHT OUTER JOIN 사용법.

  • LEFT OUTER JOIN의 반대로 생각하시면 됩니다.
  • tb 테이블의 모든 데이터와 ta 테이블과 tb 테이블의 중복되는 data를 검색할 때 사용합니다.
-- RIGHT OUTER JOIN
SELECT A.EmpID,A.EmpName,A.DeptID,B.DeptID,B.DeptName
 FROM UserInfoForJoin A
RIGHT OUTER JOIN DeptInfoForJoin B 
ON A.DeptID = B.DeptID

RIGHT OUTER JOIN 대한 설명 및 예제 입니다.

MSSQL Join FULL OUTER JOIN 사용법.

  • ta 테이블과 tb 테이블이 가지고 있는 데이터 모두 검색됩니다.
  • 수학적으로는 합집합을 생각하시면 됩니다.
--FULL OUTER JOIN
SELECT A.EmpID,A.EmpName,A.DeptID,B.DeptID,B.DeptName
 FROM UserInfoForJoin A
FULL OUTER JOIN DeptInfoForJoin B 
ON A.DeptID = B.DeptID

FULL OUTER JOIN 대한 설명 및 예제 입니다.

MSSQL Join CROSS JOIN 사용법.

  • 경우의 수를 전부 출력할 때 사용합니다.
  • 기준 테이블이 ta일 경우 ta의 데이터 한 ROW를 tb 테이블 전체 ROW와 JOIN 한다고 생각하시면 됩니다.
  • 조인의 결과로 나오는 행 개수는 두 테이블의 각 행의 개수를 곱한 수만큼 출력됩니다.
--CROSS JOIN
SELECT  A.EmpID,A.EmpName,A.DeptID,B.DeptID,B.DeptName
FROM UserInfoForJoin A
CROSS JOIN DeptInfoForJoin B;

CROSS JOIN 대한 설명 및 예제 입니다.


MSSQL Join SELF JOIN 사용법.

  • 자기 자신과 조인한다는 의미로, 하나의 table을 반복해서 join 한다고 생각하시면 됩니다.
--SELF JOIN
SELECT A.DeptID,A.DeptName ,B.DeptID,B.DeptName
FROM DeptInfoForJoin a 
    ,DeptInfoForJoin b

SELF JOIN 대한 설명 및 예제 입니다.

Join 준비 소스

기본소스.

USE sampleDB;
-- 사원정보
DROP TABLE IF EXISTS UserInfoForJoin;
CREATE TABLE dbo.UserInfoForJoin
(
	EmpID SMALLINT NOT NULL, 
	EmpName NVARCHAR(40) NOT NULL,
	Title NVARCHAR(50) NOT NULL,
	DeptID SMALLINT NOT NULL 
);

-- 부서 정보
DROP TABLE IF EXISTS DeptInfoForJoin;
CREATE TABLE dbo.DeptInfoForJoin
(
	DeptID SMALLINT NOT NULL, 
	DeptName NVARCHAR(40) NOT NULL 
);


INSERT INTO UserInfoForJoin VALUES
(100,'Elizabeth','사장',''),
(101,'Ashley','부사장',''),
(110,'Jessica','태평양지점장','10'),
(111,'Alicia','태평양지점','10'),
(112,'Diana','태평양지점','10'),
(120,'Michael','미국지점장','20'),
(121,'Alicia','미국지점','20'),
(122,'Diana','미국지점','20'),
(130,'Laura','마케팅팀장','30'),
(131,'Stephen','마케팅팀','30'),
(132,'David','마케팅팀','30')
;

INSERT INTO DeptInfoForJoin VALUES
(10,'태평양지점'),
(20,'미국지점'),
(30,'마케팅팀'),
(40,'감사팀')
;


반응형