DB

[MSSQL] JOIN

JiHxxn 2024. 3. 2. 12:02

🤔 JOIN란

JOIN 연산자는 SELECT 다음으로 많이 사용될 정도로 중요한 연산자이다.

조인 연산자란 2개 이사의 테이블을 하나로 결합하여 집합으로 나타내는 것이다. 즉 서로 다른 테이블에서 정보를 가져올 때 사용된다.


2개 테이블을 각각 하나씩 추출하기

USE BaseballData

-- players 테이블과 salaries 테이블을 추출할 때
SELECT *
FROM players
ORDER BY playerID

SELECT *
FROM salaries
ORDER BY playerID
  • 두 개 이상의 테이블을 추출할 때 위 이미지처럼 테이블을 하나씩 추출하여 볼 수 있다.

INNER JOIN (내부결합)

USE BaseballData

-- INNER JOIN을 사용해 2개의 테이블을 결합
SELECT *
FROM players AS p
	INNER JOIN salaries AS s
	ON p.playerID = s.playerID
  • INNER JOIN을 사용해 2개 이상의 테이블을 ON을 사용해 조인 조건을 걸어주고 조건에 맞는 데이터들을 하나의 테이블로 결합해 추출할 수 있다.

위 SQL 구문에서 중요한 점은

  1. ‘players’ 테이블을 기준으로 ‘salaries’ 테이블을 INNER JOIN으로 결합하려 한다.
  2. 조건으론 ‘players’ 테이블의 ‘playerID’와 ‘salaries’ 테이블의 ‘playerID’를 기준으로 결합한다. 이때 조건에 해당되지 않은 데이터는 표시되지 않는다.
  3. 이때 문제는 서로 같은 데이터 이름으로 구분할 수 없기 때문에 AS를 이용해 명시적으로 ‘player’ 테이블을 ‘p’로 줄이고, ‘salaries’ 테이블은 ‘s’로 줄여 ‘playerID’를 구분 지어 주었다.

OUTER JOIN (외부 결합) - LEFT, RIGHT

-- LEFT(players)를 기준으로 이외의 테이블에 조건에 해당하는 데이터가 없으면 NULL 표시
SELECT *
FROM players AS p
	LEFT JOIN salaries AS s
	ON p.playerID = s.playerID
-- RIGGT(salaries)를 기준으로 이외의 테이블에 조건에 해당하는 데이터가 없으면 NULL 표시
SELECT *
FROM players AS p
	RIGHT JOIN salaries AS s
	ON p.playerID = s.playerID

INNER JOIN 같은 경우 조건에 해당되지 않는 데이터는 표시해 주지 않는 반면, OUTER JOIN 같은 경우 LEFT와 RIGHT를 기준으로 해당 정보가 없는 테이블은 NULL로 표시해 테이블을 결합하는 것이 특징이다.