조인이란?
조인은 SQL Server에서 특정 테이블의 데이터를 사용하여 다른 테이블의 행을 선택하는 방법을 나타냅니다.
조인을 사용하면 테이블 간의 논리적 관계를 기준으로 둘 이상의 테이블에서 데이터를 검색할 수 있습니다.
쉽게 말해, 두 개이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법입니다.
주로 Primary key혹은 Foreign key로 두 테이블을 연결합니다. 테이블을 연결하려면 적어도 하나의 칼럼은 서로 공유되고 있어야 합니다.
INNER JOIN
INNER JOIN은 위 벤다이어그램과 같이 두 테이블의 교집합을 나타냅니다.
기준 테이블과 Join 한 테이블의 중복된 값을 보여줍니다.
결과값은 A의 테이블과 B테이블이 공통적으로 가지고 있는 데이터만 검색됩니다.
문법과 예제는 아래와 같습니다.
SELECT
table_1.조회할칼럼, table_2.조회할칼럼
FROM table_1
INNER JOIN table_2
ON table_1.기준키 = table_2.기준키
SELECT
A.PLAYER_NAME, --A테이블의 PLAYER_NAME 조회
B.PLAYER_SCORE --B테이블의 PLAYER_SCORE 조회
FROM PLAYER A
INNER JOIN SCORE B
ON A.PLAYER_NUM = B.PLAYER_NUM
AND A.PLAYER_NAME = B.PLAYER_NAME
LEFT JOIN
LEFT JOIN은 왼쪽 기준테이블의 값과 조인되는 테이블의 중복된 값을 보여줍니다.
위 벤다이어그램에서 왼쪽 테이블인 table1을 기준으로 JOIN을 하게 됩니다.
결과값은 table1의 모든 데이터와 table1과 table2의 중복되는 값이 검색됩니다.
문법과 예제는 아래와 같습니다.
SELECT
table_1.조회할칼럼, table_2.조회할칼럼
FROM table_1
LEFT JOIN table_2
ON table_1.기준키 = table_2.기준키
SELECT
A.PLAYER_NAME, --A테이블의 PLAYER_NAME 조회
B.PLAYER_SCORE --B테이블의 PLAYER_SCORE 조회
FROM PLAYER A
LEFT OUTER JOIN SCORE B
ON A.PLAYER_NUM = B.PLAYER_NUM
AND A.PLAYER_NAME = B.PLAYER_NAME
RIGHT JOIN
RIGHT JOIN은 LEFT JOIN의 반대 개념인 오른쪽 테이블을 기준으로 JOIN을 하여 중복된 값을 보여줍니다.
그럼 결과값은 table2의 모든 데이터와 table1과 table2의 중복되는 값이 검색됩니다.
문법과 예제는 아래와 같습니다.
SELECT
table_1.조회할칼럼, table_2.조회할칼럼
FROM table_1
RIGHT JOIN table_2
ON table_1.기준키 = table_2.기준키
SELECT
A.PLAYER_NAME, --A테이블의 PLAYER_NAME 조회
B.PLAYER_SCORE --B테이블의 PLAYER_SCORE 조회
FROM PLAYER A
RIGHT JOIN SCORE B
ON A.PLAYER_NUM = B.PLAYER_NUM
AND A.PLAYER_NAME = B.PLAYER_NAME
FULL OUTER JOIN
FULL OUTER JOIN은 벤다이어그램으로 보자면, 합집합으로 나타낼 수 있습니다.
table1이 가지고 있는 데이터, table2이 가지고 있는 데이터 모두 검색됩니다.
문법과 예제는 아래와 같습니다.
SELECT
table_1.조회할칼럼, table_2.조회할칼럼
FROM table_1
FULL OUTER JOIN table_2
ON table_1.기준키 = table_2.기준키
SELECT
A.PLAYER_NAME, --A테이블의 PLAYER_NAME 조회
B.PLAYER_SCORE --B테이블의 PLAYER_SCORE 조회
FROM PLAYER A
FULL OUTER JOIN SCORE B
ON A.PLAYER_NUM = B.PLAYER_NUM
AND A.PLAYER_NAME = B.PLAYER_NAME
CROSS JOIN
CROSS JOIN은 모든 경우의 수를 전부 표현해 주는 방식입니다. 모든 잠재적인 결과를 반환해 주어 아주 큰 결과값이 도출될 수 있습니다.
기준 테이블이 table1일 경우 table1의 데이터 중 하나의 ROW를 table2테이블 전체와 JOIN 하는 방식입니다.
그렇기 때문에, 도출되는 결과값도 기준 테이블의 ROW 수 * CROSS JOIN되는 테이블의 ROW 수 가 됩니다.
자세하게 설명하자면, table1의 ROW가 10개이고 table2의 ROW가 20개일 경우 CROSS JOIN을 사용하여 데이터를 추출할 경우 10 * 20 = 200개의 데이터가 결과값으로 나타나게 됩니다.
문법과 예제는 아래와 같습니다.
SELECT
table_1.조회할칼럼, table_2.조회할칼럼
FROM table_1
CROSS JOIN table_2
SELECT
A.PLAYER_NAME, --A테이블의 PLAYER_NAME 조회
B.PLAYER_SCORE --B테이블의 PLAYER_SCORE 조회
FROM PLAYER A
CROSS JOIN SCORE B
SELF JOIN
SELF JOIN은 위 이미지와 같이 기준 테이블과 기준 테이블을 조인합니다. 즉, 하나의 테이블을 여러 번 복사하는 행위와 같습니다.
자신이 가지고 있는 컬럼을 다양하게 변형시켜 활용할 경우에 사용합니다.
문법과 예제는 아래와 같습니다.
SELECT
table_1.조회할칼럼, table_2.조회할칼럼
FROM table_1 A, table_1 B
SELECT
A.PLAYER_NAME, --A테이블의 PLAYER_NAME 조회
B.PLAYER_NUM --B테이블의 PLAYER_NUM 조회
FROM PLAYER A, PLAYER B
'DEV > DB & SQL' 카테고리의 다른 글
[MSSQL] VIEW 테이블의 정의와 사용 방법 (0) | 2024.03.28 |
---|---|
[MyBatis] MyBatis란? (2) | 2024.03.14 |
[MSSQL] IN과 NOT IN 사용하기 (2) | 2023.04.11 |
[MSSQL] Table과 Column의 Description 추가, 수정하기 (2) | 2022.12.16 |
SQL에서의 WHERE 1=1 (2) | 2022.12.13 |
댓글