Database - Join(조인)

김준영·2023년 1월 29일
1

CS공부

목록 보기
2/20

조인이란?

  • 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법
  • 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것이다.
  • 조인은 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어 낸다.

테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다.

조인의 필요성

  • 관계형 데이터베이스의 구조적 특징으로 정규화를 수행하면 의미있는 데이터의 집합으로 테이블이 구성되고 각 테이블끼리는 관계(Relationship)을 갖게 된다.
  • 이와 같은 특징으로 관계형 데이터베이스는 저장 공간의 효율성과 확장성이 향상되게 된다.
  • 다른 한편으로는 서로 관계있는 데이터가 여러 테이블로 나뉘어 저장되므로 각 테이블에 저장된 데이터를 효과적으로 검색하기 위해 조인이 필요하다.

조인 종류

  • INNER JOIN
  • EQUAL JOIN
  • NATUREAL JOIN
  • OUTER JOIN
  • LEFT OUTER JOIN
  • RIGHT OUTER JOIN
  • FULL OUTER JOIN
  • CROSS JOIN
  • SELF JOIN

INNER JOIN

  • 여러 애플리케이션에서 사용되는 가장 흔한 결합 방식이며 기본 조인 형식으로 간주
  • 내부 조인은 조인 구문에 기반한 2개의 테이블의 컬럼 값을 결합함으로써 새로운 결과 테이블을 생성
  • 명시적 조인 표현(explicit)과 암시적 조인 표현(implicit) 2개의 다른 조인식 구문이 있다.

명시적 조인 표현

테이블에 JOIN 키워드를 사용하고 다음 예제와 같이 ON 키워드를 조인에 대한 구문을 지정하는데 사용한다.

SELECT * FROM A INNER JOIN B ON A.name = B.name;

암시적 조인 표현

select 구문의 from 절에서 ,를 사용하여 단순히 조인을 위한 여러 테이블을 나열한다.

SELECT * FROM A, B WHERE A.name = B.name;

EQUAL JOIN

  • 비교자 기반의 조인이며, 조인 구문에서 동등비교만을 사용한다.
  • 다른 비교 연산자( <와 같은)를 사용하는 것은 동등 조인으로서의 조인의 자격을 박탈하는 것이다.

NATURAL JOIN

  • 동등 조인의 한 유형으로 조인 구문이 조인된 테이블에서 동일한 컬럼명을 가진 2개의 테이블에서 모든 컬럼들을 비교함으로써 암시적으로 일어나는 구문이다.
  • 결과적으로 나온 조인된 테이블은 동일한 이름을 가진 컬럼의 각 쌍에 대한 단 하나의 컬럼만 포함하고 있다.

OUTER JOIN

  • 조인 대상 테이블에서 특정 테이블의 데이터가 모두 필요한 상황에서 외부 조인을 활용하여 효과적으로 결과 집합을 생성할 수 있다.

LEFT OUTER JOIN

  • 우측 테이블에 조인할 컬럼의 값이 없는 경우 사용.
  • 즉, 좌측 테이블에 모든 데이터를 포함하는 결과 집합을 생성
SELECT * FROM A LEFT OUTER JOIN B ON A.name = B.name;

RIGHT OUTER JOIN

  • 좌측 테이블에 조인할 컬럼의 값이 없는 경우 사용.
  • 즉, 우측 테이블에 모든 데이터를 포함하는 결과 집합을 생성
SELECT * FROM A RIGHT OUTER JOIN B ON A.name = B.name;

FULL OUTER JOIN

  • 양쪽 테이블 모두 OUTER JOIN이 필요할 때 사용
  • 합집합을 말한다.
SELECT * FROM A FULL OUTER JOIN B ON A.name = B.name;

CROSS JOIN

  • 조인되는 두 테이블에서 곱집합을 반환.
  • 즉, 두 번째 테이블로부터 각 행과 첫 번째 테이블에서 각 행이 한 번씩 결합된 열을 만들 것.
  • m*n 개의 행을 생성

명시적 조인 표현

SELECT * FROM A CROSS JOIN B;

암시적 조인 표현

SELECT * FROM A, B;

SELF JOIN

  • 자기자신과 조인하는 것.
  • 하나의 테이블을 여러번 복사해서 조인한다.
  • 자신이 갖고 있는 칼럼을 다양하게 변형시켜 활용할 때 자주 사용.
SELECT A.name, B.age FROM A ,B;

조인을 사용할 때 주의사항

  • SQL 문장의 의미를 제대로 파악

    SQL을 어떻게 작성하느냐에 따라 성능이 크게 좌우된다. 어떤 질의를 수행할 것인지를 명확하게 정의한 후, 비효율을 제거하여 최적의 SQL을 작성해야 한다.

  • 명확한 조인 조건 제공

    조인 조건을 명확하게 제공하지 않을 경우, 의도치 않게 CROSS JOIN이 수행될 수 있다.

조인을 사용할 때 고려사항

  • 조인할 대상의 집합을 최소화

    집합을 최소화할 방법이 있으면, 조건을 먼저 적용하여 관계를 맺을 집합을 최소화한 후, 조인을 맺는 것이 효율적이다.

  • 효과적인 인덱스의 활용

    인덱스를 활용하면 조인 연산의 비용을 극적으로 낮출 수 있다.


참조: https://velog.io/@ragnarok_code/DataBase-%EC%A1%B0%EC%9D%B8Join%EC%9D%B4%EB%9E%80, https://gyoogle.dev/blog/computer-science/data-base/Join.html

profile
ㅎㅎ

0개의 댓글