본문 바로가기
DB & SQL

[SQL] JOIN의 정의와 사용법

by 무사뎀벨레 2023. 7. 13.

 

 

 

 

 

조인이란?



조인은 SQL Server에서 특정 테이블의 데이터를 사용하여 다른 테이블의 행을 선택하는 방법을 나타냅니다.

 

조인을 사용하면 테이블 간의 논리적 관계를 기준으로 둘 이상의 테이블에서 데이터를 검색할 수 있습니다. 


쉽게 말해, 두 개이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법입니다. 

 

주로 Primary key혹은 Foreign key두 테이블을 연결합니다. 테이블을 연결하려면 적어도 하나의 칼럼은 서로 공유되고 있어야 합니다. 

 

 

 

 

 

 

 

INNER JOIN


출처 : https://www.w3schools.com/sql/sql_join_self.asp#gsc.tab=0


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


출처 : https://www.w3schools.com/sql/sql_join_self.asp#gsc.tab=0


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


출처 : https://www.w3schools.com/sql/sql_join_self.asp#gsc.tab=0


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


 

출처 : https://www.w3schools.com/sql/sql_join_self.asp#gsc.tab=0

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


출처 : https://codingsight.com/sql-joins-tutorial-with-examples/

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


출처 : https://codingsight.com/sql-joins-tutorial-with-examples/

 

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
반응형

댓글