
SQL을 공부하면서 느낀 점은
SELECT보다 JOIN이 훨씬 중요하다는 것이다.
실무에서는 하나의 테이블만 조회하는 경우보다
여러 테이블을 연결해서 분석하는 경우가 훨씬 많기 때문이다.
관계형 데이터베이스는 데이터를 한 곳에 다 저장하지 않는다.
예를 들어,
customersorders처럼 나눠 저장한다.
그래서 고객 이름과 주문 금액을 함께 보려면
두 테이블을 연결해야 한다.
이때 사용하는 것이 JOIN이다.
가장 기본이 되는 JOIN이다.
SELECT c.name, o.amount
FROM customers c
JOIN orders o
ON c.customer_id = o.customer_id;
공통 컬럼(customer_id)을 기준으로
두 테이블에 모두 존재하는 데이터만 조회한다.
처음에는 단순히 “교집합”이라고 외웠는데,
공부하면서 느낀 건
👉 ON 조건이 정확해야 데이터가 정확하게 연결된다는 점이다.
SELECT c.name, o.amount
FROM customers c
LEFT JOIN orders o
ON c.customer_id = o.customer_id;
왼쪽 테이블은 모두 유지된다.
주문이 없는 고객도 조회되며
이 경우 주문 컬럼은 NULL이 된다.
이걸 보면서 이해한 점은,
👉 LEFT JOIN은 “빠진 데이터 찾기”에 자주 쓰인다는 것.
예:
처음엔 그냥 컬럼 같으면 조인한다고 생각했는데
공부하면서 PK / FK 개념이 더 중요하다는 걸 알게 됐다.
JOIN은 단순 연결이 아니라
테이블 관계를 기반으로 연결하는 작업이라는 걸 이해했다.
고객별 총 주문 금액을 구해보면서
JOIN 후 집계가 어떻게 동작하는지도 공부했다.
SELECT c.name,
SUM(o.amount) AS total_amount
FROM customers c
JOIN orders o
ON c.customer_id = o.customer_id
GROUP BY c.name;
실행 흐름을 생각해보면:
이 순서를 이해하는 게 중요하다고 느꼈다.
LEFT JOIN 후 WHERE 조건을 잘못 쓰면
INNER JOIN처럼 동작할 수 있다는 점이 인상적이었다.
예를 들어:
LEFT JOIN orders o ON ...
WHERE o.amount > 0;
이 경우 NULL이 제거되기 때문에
결과적으로 매칭된 데이터만 남게 된다.
👉 JOIN 후 필터 조건의 위치도 중요하다는 걸 배웠다.
✔ 테이블 구조 이해
✔ 데이터 관계 이해
✔ 분석 설계 능력