오늘의 학습 목표는 SQL 라이브 강의, SQL 복습, SQL 문제풀기, 파이썬 학습으로 설정했다. 특히 오늘은 SQL의 두 가지 핵심 개념인 UNION과 JOIN을 배웠다.
오늘 강의의 핵심 메시지는 명확했다: UNION과 JOIN은 자유롭게 사용할 수 있다.
SQL 구문을 작성할 때 필요에 따라 UNION 함수와 JOIN 함수가 함께 사용될 수 있다. 1회차 강의에서 배웠던 RDBMS의 개념을 다시 떠올려보면, 데이터들은 규칙성을 가지고 각각의 테이블에 저장되어 있다.
이러한 테이블들을 결합하는 방식은 여러 가지가 있다. 테이블들의 열을 맞춰서 UNION을 하고, 결합된 데이터를 가지고 공통컬럼을 기반으로 JOIN을 할 수 있다. 또한 반대로 공통컬럼을 기준으로 먼저 JOIN을 하고, 결합된 데이터를 가지고 열을 맞추는 UNION을 할 수도 있다.
추출쿼리에 따라, 순서에 상관없이 사용이 가능하다는 점이다.
UNION vs JOIN 비교표
| 구 분 | UNION | JOIN |
| 결합방식 | 수직결합(세로결합) | 수평결합(가로결합) |
| 특 징 | • SELECT 문은 같은 수의 열을 가져야 한다. • 각 SELECT 문의 열은 동일한 순서를 가져야 한다. |
• 각 테이블은 결합을 위해 공통컬럼을 반드시 1개 이상 가져야 한다. • PK는 기본키라고 부르며, NULL일 수 없고, 유일한 값을 가진다. 테이블 당 하나의 기본키만 가질 수 있다. • FK는 외래키라고 부르며, 다른 테이블의 PK와 연결되는 컬럼을 의미한다. (즉, PK와 공통컬럼) |
UNION
- UNION: 결합한 결과에서 중복되는 행은 하나만 표시
- UNION ALL: 결합한 결과에서 중복되는 행을 모두 표시
SELECT 컬럼1, 컬럼2 FROM TABLE_A
UNION
SELECT 컬럼1, 컬럼2 FROM TABLE_B
JOIN
1. Inner Join: 두 테이블에서 일치하는 값을 가진 행을 반환
TABLE_A INNER JOIN TABLE_B ON A.공통컬럼=B.공통컬럼
2. Left Join: 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환
일치하는 항목이 없으면 오른쪽 테이블의 열에 대해 NULL 값이 출력됨
TABLE_A LEFT JOIN TABLE_B ON A.공통컬럼=B.공통컬럼
3. Right Join: 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환
일치하는 항목이 없으면 왼쪽 테이블의 열에 대해 NULL 값이 출력됨
TABLE_A RIGHT JOIN TABLE_B ON A.공통컬럼=B.공통컬럼
수업 이후 UNION과 JOIN에 대해 강의를 다시 들었다. 다시 들으니 개념은 이해가 된다.
하지만 현실은 조금 다르다. 실제 문제를 마주했을 때 바로 UNION을 사용할지, JOIN을 사용할지 판단하고 그것을 즉시 구현할 수 있을지는 아직 의문이다. 이것이 이론과 실전의 차이인 것 같다.
9일차 하루를 마무리하며...
SQL이라도 학습, 복습, 문제풀이를 반복하여 하나라도 잘하고 싶다는 생각이 든다.
단순히 개념을 이해하는 것을 넘어, 실제 문제 상황에서 "어떤 상황에는 UNION을 쓰고, 어떤 상황에는 JOIN을 써야 한다"는 판단을 할 수 있는 수준까지 도달해야 한다. 그러려면 반복적인 실습이 필수다.
오늘 배운 내용을 정리하면:
- UNION: 여러 테이블의 데이터를 세로로 쌓기 (행 결합)
- JOIN: 두 테이블을 공통 컬럼을 기준으로 옆으로 연결 (열 결합)
- 두 방식은 상황에 따라 자유롭게 조합 가능
이 원칙들을 머리에 새기고, 내일부터 문제풀이를 통해 손에 익혀야겠다.