INNER JOIN

INNER JOIN은 두 테이블에서 조인 조건을 만족하는 행만 반환한다.
공통된 열이나 조건을 기준으로 결합된 결과만 포함된다.

SELECT *
FROM table1
INNER JOIN table2
ON table1.id = table2.id;

LEFT JOIN (LEFT OUTER JOIN)

LEFT OUTER JOIN은 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 조인 조건을 만족하는 행을 반환한다.
오른쪽 테이블에 해당하는 행이 없으면, 결과는 NULL로 채워진다.

SELECT *
FROM table1
LEFT JOIN table2
ON table1.id = table2.id;

RIGHT JOIN (RIGHT OUTER JOIN)

RIGHT OUTER JOIN은 오른쪽 테이블의 모든 행과 왼쪽 테이블에서 조인 조건을 만족하는 행을 반환한다.
왼쪽 테이블에 해당하는 행이 없으면, 결과는 NULL로 채워진다.

SELECT *
FROM table1
RIGHT JOIN table2
ON table1.id = table2.id;

FULL JOIN (FULL OUTER JOIN)

FULL OUTER JOIN은 두 테이블의 모든 행을 반환하며, 조인 조건을 만족하는 행이 있으면 그 행을 포함하고, 없으면 NULL로 채워진다.
LEFT, RIGHT OUTER JOIN을 합한 것인데 다 가져오지만 서로 비어있는 부분은 NULL 처리한다.

SELECT *
FROM table1
FULL JOIN table2
ON table1.id = table2.id;

CROSS JOIN

CROSS JOIN은 두 테이블 간의 데카르트 곱을 수행한다.
즉, 첫 번째 테이블의 모든 행과 두 번째 테이블의 모든 행의 조합을 반환한다.
테이블의 행이 각각 3, 4개가 있다면 12개의 행을 반환한다는 것이다.
조인 조건이 없으며, 모든 가능한 조합을 포함한다.

SELECT *
FROM table1
CROSS JOIN table2;

SELF JOIN

SELF JOIN은 같은 테이블을 두 번 조인하여 자기 자신과 결합한다.
일반적으로 자기 자신과 비교할 때 사용됩니다.

SELECT a.*, b.*
FROM table1 a
JOIN table1 b
ON a.id = b.related_id;

NATURAL JOIN

NATURAL JOIN은 두 테이블에서 이름이 같은 모든 열을 기준으로 자동으로 조인한다.
공통 열 이름이 자동으로 사용되며, 결과에서 중복 열은 제거됩니다.
이름이라는 포인트를 기억해두자.

SELECT *
FROM table1
NATURAL JOIN table2;

USING

USING은 조인할 열의 이름을 명시적으로 지정하는 방법이다.
열의 이름이 두 테이블에서 동일해야 하며, 중복된 열 이름이 결과에서 한 번만 나타납니다.

SELECT *
FROM table1
JOIN table2
USING (common_column);

NATURAL JOIN vs USING

이 두 함수는 모두 이름과 관련된 함수이다.
NATURAL JOIN의 특징은 조건을 명시하지 않는다.
조건을 명시하지 않고 같은 이름을 가진 열들이 자동으로 조인된다.

USING의 경우 조인할 열의 이름을 명시하는 방법이다.
JOIN은 아니고 ON과 같이 조건을 걸어주는 방식이다.

이름이 같은 열들을 묶어서 조인을 하려면 NATURAL JOIN을 써도 된다.
이러면 이름이 같은 것들끼리 모두 묶일 것이다.

그런데 테이블 2개에서 "LDHBENECIA"라는 이름만 찾고 싶다면 USING으로 이름을 걸어줄 수 있다는 것이다.

ON

ON 절은 조인 조건을 명시적으로 정의할 때 사용된다.
열의 이름이 다르거나 복잡한 조건을 사용할 수 있다.

SELECT *
FROM table1
JOIN table2
ON table1.column1 = table2.column2;
profile
지극히 평범한 공대생

0개의 댓글

Powered by GraphCDN, the GraphQL CDN