JOIN

기술노트

🗃️ JOIN

JOIN은 관계형 데이터베이스(RDBMS)에서 두 개 이상의 테이블을 연결하여, 관련된 데이터를 함께 조회하는 SQL 명령어입니다. 여러 테이블에 분산되어 저장된 데이터를 하나의 결과 집합으로 통합하여 보여줄 때 사용됩니다.


🤔 JOIN은 왜 필요한가?

관계형 데이터베이스는 데이터의 중복을 최소화하고 일관성을 유지하기 위해 '정규화(Normalization)' 과정을 거쳐 데이터를 여러 테이블로 나누어 저장합니다. 예를 들어, '주문' 정보는 `Orders` 테이블에, '고객' 정보는 `Customers` 테이블에 저장될 수 있습니다.

이때, 특정 고객의 주문 내역을 조회하려면 `Orders` 테이블과 `Customers` 테이블을 연결해야 합니다. JOIN은 이렇게 분리된 테이블들을 연결하여 원하는 정보를 얻을 수 있게 해줍니다.


📚 JOIN의 종류

  • INNER JOIN (내부 조인) : 두 테이블에 모두 일치하는 행(Row)만 반환합니다. 가장 일반적으로 사용되는 조인 방식입니다.

```sql SELECT * FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID; ```

  • LEFT JOIN (LEFT OUTER JOIN, 왼쪽 외부 조인) : 왼쪽 테이블의 모든 행과, 오른쪽 테이블에서 일치하는 행을 반환합니다. 오른쪽 테이블에 일치하는 행이 없으면 `NULL`로 표시됩니다.

```sql SELECT * FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID; ```

  • RIGHT JOIN (RIGHT OUTER JOIN, 오른쪽 외부 조인) : 오른쪽 테이블의 모든 행과, 왼쪽 테이블에서 일치하는 행을 반환합니다. 왼쪽 테이블에 일치하는 행이 없으면 `NULL`로 표시됩니다.

```sql SELECT * FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID; ```

  • FULL JOIN (FULL OUTER JOIN, 완전 외부 조인) : 왼쪽 또는 오른쪽 테이블 중 어느 한쪽에라도 일치하는 행이 있으면 모두 반환합니다. 일치하는 행이 없으면 `NULL`로 표시됩니다.
  • CROSS JOIN (교차 조인) : 두 테이블의 모든 행을 조합하여 가능한 모든 경우의 수를 반환합니다. (카티션 곱)
  • SELF JOIN (셀프 조인) : 하나의 테이블을 마치 두 개의 테이블처럼 사용하여 스스로 조인하는 방식입니다. (예: 같은 테이블에서 상사-부하 직원 관계 찾기)

💡 정보처리기사 핵심 Point

  • JOIN은 관계형 데이터베이스에서 여러 테이블의 데이터를 통합하여 조회하는 가장 핵심적인 방법입니다.
  • 정보처리기사 시험에서는 각 JOIN의 개념과 결과 집합의 특징을 정확히 이해하는 것이 중요합니다. 특히 `INNER JOIN`, `LEFT JOIN`, `RIGHT JOIN`의 차이점을 묻는 문제가 자주 출제됩니다.
  • 복잡한 쿼리를 작성할 때 JOIN을 효율적으로 사용하는 능력은 데이터베이스 활용의 핵심 역량입니다.