SQL UNION, JOIN (2/2)

DA_LEESUNHO·2025년 11월 3일

Learning Base

목록 보기
4/15

FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY

SQL 동작 순서를 명시
알아두고 항시 습관화하기

이어서 진행해보자
   - 한 주의 시작부터 파이썬 세션도 같이 진행되고 정신이 없지만 정신차리고 해보자
   - JOIN 에 대한 예제를 코딩테스트 사이트에서 많이 풀어보자


Remind
'UNION' : 수직 결합 / 'JOIN' : 수평 결합 임을 떠올리며 학습해보자.


SQL 테이블 수평 결합 (JOIN)

여러 테이블을 수평 으로 결합 할 때 사용하는 기능이다.
기본적인 구조는 다음과 같다.

---- JOIN 기본 구문
select 컬럼1, 컬럼2.
from 테이블 a
join 				-- 필요에 따라 사용하는 JOIN의 종류가 다양하다. 다음 주에 학습할 예정 ~
select 컬럼1, 컬럼2..
from 테이블 b
on a.공통컬럼=b.공통컬럼
---- JOIN 기본 구문
------ 공통 컬럼이 2개 이상인 경우
select 컬럼1, 컬럼2
from 테이블 as a
join 				-- 필요에 따라 사용하는 JOIN의 종류가 다양하다. 다음 주에 학습할 예정 ~
select 컬럼1, 컬럼2..
from 테이블 as b
on a.공통컬럼=b.공통컬럼 and a.공통컬럼2=b.공통컬럼2 

JOIN 의 종류는 다음 주에 학습 할 예정이다.
그렇다면 필수 조건 (주의사항) 은 무엇일까?

① JOIN 하고자 하는 테이블들의 공통 컬럼을 찾는다.
공통 컬럼의 관계(PK, FK) 를 찾는다.
출력하고자 하는 결과 값에 따른 적절한 JOIN 방식을 찾는다.

② 공통 컬럼의 **관계(PK, FK)**을 찾는다.

  • PK, FK 가 무엇인지 먼저 알아보자
구분설명
PK기본 키, Null 일 수 없고 유일한 값을 갖는다
'FK'외래 키, PK와 JOIN 하기 위한 연결컬럼의 역할
  • 표에 나온 설명과 같이 JOIN을 하기 위해서는,
    하나의 테이블의 PK와, 연결해주려는 테이블의 FK 를 찾아주어야 한다.
    PK의 특징(NULL 값 존재 X, 모든 행의 값이 유일한 값)을 기억해두자

③ 적절한 JOIN 방식을 찾자

위 도식과 같이, JOIN의 종류는 다양하다.
JOIN에 대해 전반적인 이해를 바탕으로 필요에 따른 JOIN 방식을 사용하여야한다.
실무에서 자주 사용하는 JOIN 방식에 대해 알아보자

1) INNER JOIN

: 두 테이블에서 일치하는 값을 가진 행을 출력 (교집합)

---- INNER JOIN 기본 구문
select 컬럼1, 컬럼2... 
from 테이블명1
inner join 테이블명2   
on a.공통컬럼=b.공통컬럼

2) LEFT JOIN

: 기준 테이블(A)의 모든 행과, 연결하려는 테이블(B)의 일치하는 행을 반환
: 일치하는 항목이 없으면 B의 컬럼 값에 NULL 값이 출력

---- LEFT JOIN 기본 구문
select 컬럼1, 컬럼2... 
from 테이블1 as a                -----  기준테이블 : 테이블1 
left join basic.theglory2 as b
on a.공통컬럼=b.공통컬럼

RIGHT 조인의 경우, LEFT의 반대로 오른쪽 컬럼이 기준이 된다.
LEFT JOIN에서 순서만 변경하면 되기 때문에 별도로 학습하지 않는다.



3) FULL OUTER JOIN

: 테이블의 모든 데이터를 보고 싶을 때
: MySQL의 경우 지원 X (UNION과 LEFT & RIGHT JOIN의 결합)

실무에서 하면 "딱밤" (리소스 및 비용 엄청 남)

select 컬럼1, 컬럼2,...
from 테이블명1 a left join 테이블명2 b
on a.공통컬럼=b.공통컬럼

union

select 컬럼1, 컬럼2,...
from 테이블명1 a right join 테이블명2 b		--- LEFT 조인으로 테이블1과 2의 위치를 바꿔주면 된다.
on a.공통컬럼=b.공통컬럼

UNION / JOIN 비교

구분UNION
'결합방식'수직 결합
특징SELECT 문은 같은 수의 열을 가져야 합니다.
각 SELECT 문의 열은 동일한 순서를 가져야 합니다.
'종류'UNION : 결합한 결과에서 중복되는 행은 하나만 표시
UNION ALL: 결합한 결과에서 중복되는 행을 모두 표시

구분JOIN
'결합방식'수평 결합
특징각 테이블은 결합을 위해 공통컬럼을 반드시 1개이상 가져야 합니다.
PK 는 기본키라고 부르며, NULL 일 수 없고, 유일한 값을 가집니다. 테이블 당 하나의 기본키만 가질 수 있습니다.
FK 는 외래키라고 부르며, 다른 테이블의 PK 와 연결되는 컬럼을 의미합니다. (즉, PK 와 공통컬럼)
'종류'INNER / LEFT / FULL OUTER
profile
성장과 회고를 기록하는 일기장

0개의 댓글