SQL JOIN

bolee·2022년 5월 22일
0

여기에서는 SQL 문법 중 JOIN에 대해 알아볼 것이다.

SQL에서 하나의 테이블에 원하는 데이터가 모두 있다면 좋겠지만, 두 개의 테이블을 엮어야 원하는 결과가 나오는 경우도 많다. JOIN을 사용하면 두 개의 테이블을 엮어서 원하는 데이터를 추출할 수 있다.

두 테이블의 조인을 위해서 기본키(PRIMARY KEY, PK)와 외래키(FOREIGN KEY, FK) 관계로 맺어져야 하고, 이를 일대다 관계라고 한다. 아래에서 INNER JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN에 대해 간단하게 알아볼 것이다.

  • INNER JOIN(내부 조인): 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.
  • OUTER JOIN(외부 조인): 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.
  • CROSS JOIN(상호 조인): 한쪽 테이블의 모든 행과 다른쪽 테이블의 모든 행을 조인하는 기능이다.
  • SELF JOIN(자체 조인): 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다.

INNER JOIN(내부 조인)

두 테이블을 연결할 때 가장 많이 사용하는 것이 내부 조인이다. 그냥 조인이라고 부르면 내부 조인을 의미한다.

SELECT <column_name1>, ...
FROM <table_name1>
	INNER JOIN <table_name2>
    ON <condition_for_join>
[WHERE <conditions>]

* INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식한다.

OUTER JOIN(외부 조인)

내부 조인은 두 테이블에 모두 데이터가 있어야만 결과가 나오지만, 외부 조인은 한쪽에만 데이터가 있어도 결과가 나온다.

SELECT <column_name1>, ...
FROM <table_name1(LEFT 테이블)>
	<LEFT|RIGHT|FULL> OUTER JOIN <table_name2(RIGHT 테이블)>
    ON <condition_for_join>
[WHERE <conditions>]

OUTER JOIN는 아래와 같은 종류가 있다.

  • LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인
  • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인
  • FULL OUTER JOIN: 왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조인

CROSS JOIN(상호 조인)

한쪽 테이블의 모든 행과 다른쪽 테이블의 모든 행을 조인시키는 기능이다. 상호 조인의 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수만큼 된다.
카티션 곱(CARTESIAN PRODUCT)라고도 한다.

SELECT *
FROM <table_name1>
	CROSS JOIN <table_name2>

SELF JOIN(자체 조인)

자체 조인은 자기자신과 자기 자신을 조인한다는 의미이며, 자기 자신과 조인하므로 1개의 테이블을 사용한다.
하나의 테이블을 여러번 복사해서 조인한다고 생각하시면 된다.

자신이 가지고 있는 칼럼을 다양하게 변형시켜 활용할 경우에 자주 사용한다.

SELECT <column_name1>, ...
FROM <table_name> <table_nickname1>
	INNER JOIN <table_name> <table_nickname2>
    ON <condition_for_join>
[WHERE <conditions>]

참고
https://hongong.hanbit.co.kr/sql-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-joininner-outer-cross-self-join/
https://coding-factory.tistory.com/87

0개의 댓글