본문 바로가기
데이터베이스/SQLD

[SQLD 도전기] SQL 기본(9) - 조인(JOIN)

by 썬키 2022. 10. 19.

본문 내용은 모두 필자가 공부하며 직접 정리한 내용입니다.

Kdata 데이터자격검정의 SQL 개발자(SQLD) 가이드를 참고하였습니다.

 

─지난 글 보기─

 

[SQLD 도전기] SQL 기본(7) - GROUP BY, HAVING 절

본문 내용은 모두 필자가 공부하며 직접 정리한 내용입니다. Kdata 데이터자격검정의 SQL 개발자(SQLD) 가이드를 참고하였습니다. ─지난 글 보기─ [SQLD 도전기] SQL 기본(6) - 함수(FUNCTION) 본문 내용

itsmesunky.tistory.com

 

과목 2 SQL 기본 및 활용

 

제 1장 SQL 기본

제 9절 조인(JOIN)

1.JOIN 개요

두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것

ㆍFROM 절에 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할 때는 단 두 개의 집합 간에만 조인이 일어난다.

 

2. EQUI JOIN

EQUI(등가) JOIN두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법

ㆍ대부분 PK ↔ FK 의 관계를 기반으로 한다. (반드시 그런것은 아니다.)

 

SELECT 테이블1.칼럼명, 테이블2.칼럼명, ... 
FROM 테이블1, 테이블2 
WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2; 
→ WHERE 절에 JOIN 조건을 넣는다.

위와 같은 SQL문을 ANSI/ISO SQL 표준 방식으로 표현하면 아래와 같다.

SELECT 테이블1.칼럼명, 테이블2.칼럼명, ... 
FROM 테이블1 INNER JOIN 테이블2 
ON 테이블1.칼럼명1 = 테이블2.칼럼명2; 
→ ON 절에 JOIN 조건을 넣는다.

 

[예제] 선수 테이블과 팀 테이블에서 선수 이름과 소속된 팀의 이름을 출력하시오

[예제] 
SELECT PLAYER.PLAYER_NAME 선수명, TEAM.TEAM_NAME 소속팀명 
FROM PLAYER, TEAM WHERE PLAYER.TEAM_ID = TEAM.TEAM_ID; 

또는 INNER JOIN을 명시하여 사용할 수도 있다. 
SELECT PLAYER.PLAYER_NAME 선수명, TEAM.TEAM_NAME 소속팀명 
FROM PLAYER INNER JOIN TEAM 
ON PLAYER.TEAM_ID = TEAM.TEAM_ID;

 

조인 조건에 맞는 데이터만 출력하는 INNER JOIN에 참여하는 대상 테이블이 N개라고 했을 때,

N개의 테이블로부터 필요한 데이터를 조회하기 위해 필요한 JOIN 조건은

대상 테이블의 개수에서 하나를 뺀 N-1개 이상이 필요하다.

즉, FROM절에 테이블이 3개가 표시 되어 있다면 JOIN  조건은 3-1=2개 이상이 필요하다.

 

3. Non EQUI JOIN

Non EQUI(비등가) JOIN두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용

ㆍNon EQUI JOIN의 경우, "=" 연산자가 아닌 다른(Between, >, >=, <, <= 등) 연산자들을 사용하여 JOIN을 수행하는 것

SELECT 테이블1.칼럼명, 테이블2.칼럼명, ... 
FROM   테이블1, 테이블2 
WHERE 테이블1.칼럼명1 BETWEEN 테이블2.칼럼명1 AND 테이블2.칼럼명2;

 

 

다음에는 표준 조인(STANDARD JOIN)에 관한 내용을 정리하여 포스팅하겠습니다.

댓글