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 구문에서 중요한 점은
- ‘players’ 테이블을 기준으로 ‘salaries’ 테이블을 INNER JOIN으로 결합하려 한다.
- 조건으론 ‘players’ 테이블의 ‘playerID’와 ‘salaries’ 테이블의 ‘playerID’를 기준으로 결합한다. 이때 조건에 해당되지 않은 데이터는 표시되지 않는다.
- 이때 문제는 서로 같은 데이터 이름으로 구분할 수 없기 때문에 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로 표시해 테이블을 결합하는 것이 특징이다.