SQL JOIN 개념에 대해서 이야기해봅시다.
SQL JOIN 개념에 대해 알기
SQL JOIN 개념은 데이터베이스(DataBase)에서 2개 이상의 테이블을 연결하여 데이터를 출력하도록 하는 SQL 쿼리 작성 방식입니다.
조인(JOIN)은 2개 이상의 테이블들을 서로 묶어서 하나의 결과 집합으로 만들어 내는 기능을 합니다. 데이터베이스의 테이블들은 중복과 저장 공간의 낭비를 피하고 데이터의 무결성을 보장하기 위해서 일반적으로 여러 개의 테이블들로 분리해서 데이터를 저장하게 됩니다. 그리고 분리된 테이블들은 서로 관계를 형성하고 있는데 조인은 이러한 분리된 테이블들을 연결시키는 역할을 합니다.
조인을 할 때는 보통 PK나 FK와 같은 키 값을 가지고 2개의 테이블들을 연결하는데 반드시 PK(Primary Key)나 FK(Foreign Key)가 아니어도 되고 다른 컬럼을 사용해서 연결시킬 수 있습니다.
조인(JOIN)은 SQL의 FROM 절에 연결하고자 하는 테이블들을 나열하고, WHERE 절에 테이블을 연결하기 위한 조건을 거는 방식으로 작성됩니다.
[조인(JOIN) 사용 예시]
SELECT A.컬럼1, B.컬럼3, B.컬럼4, B.컬럼5
FROM 테이블 A,
테이블 B
WHERE A.컬럼1 = B.컬럼2 ;
SELECT *
FROM 테이블 A
LEFT OUTER JOIN 테이블 B
ON 검색될 조건 ;
SELECT *
FROM 테이블 A,
테이블 B
WHERE A.컬럼1 = B.컬럼2(+) ;
SELECT A.컬럼1, B.컬럼3, B.컬럼4, B.컬럼5
FROM 테이블 A,
INNER JOIN 테이블 B
ON A.컬럼1 = B.컬럼2 ;
SQL JOIN 개념에 대한 설명
SQL JOIN 개념은 데이터베이스(DB)에서 각기 다른 테이블을 한번에 보여주기 위해서 사용하는 쿼리 작성 방식입니다. SQL 쿼리를 작성할 때 대부분의 구성이 조인(JOIN)을 사용합니다. 일반적으로 SQL 쿼리는 80% 이상이 조인을 사용할 정도로 많이 사용하는 연결 방식입니다.
조인(JOIN)을 하기 위해서는 조인하고자 하는 테이블들을 FROM 절에 배치하고 WHERE 절에 테이블들의 연결을 위한 컬럼을 조건을 걸어 연결 시키는 방식으로 사용합니다. 테이블 간에 PK와 FK 연관 관계가 없어도 조인할 수 있습니다.
EQUI JOIN은 같다는 Equal 조건으로 조인(JOIN) 하는 것입니다. 가장 흔하게 볼 수 있는 조인 방식입니다.
Non EQUI JOIN은 같다는 Equal 조건으로 조인하는 것이 아닌 다른 조건으로 조인하는 방식입니다. Equal 조건이 아닌 조건은 BETWEEN, >, <. >=, <=가 있습니다.
EQUI JOIN과 Non EQUI JOIN은 하나의 쿼리에서 같이 사용할 수 있습니다.
조인은 2개 뿐만 아니라 3개 이상의 테이블들에 대해서도 연결하여 사용할 수 있습니다.
OUTER JOIN은 일반적인 조인과는 다르게 JOIN 조건에 만족하지 않는 행들도 출력 되도록 하는 형태입니다. OUTER JOIN은 INNER JOIN과 대비되는 조인 방식입니다. 일반적으로는 INNER JOIN 방식이지만 상황에 따라서 OUTER JOIN을 사용하기도 합니다.
LEFT OUTER JOIN의 경우 LEFT TABLE과 RIGHT TABLE의 데이터 중에서 JOIN에 성공한 데이터와 JOIN에 성공하지 못한 나머지 LEFT TABLE 데이터가 함께 출력하도록 하는 방식입니다.
오라클(Oracle)에서는 모든 행이 출력되는 테이블의 반대편 테이블의 옆에 (+) 기호를 붙여서 작성합니다.
STANDARD JOIN은 RDBMS의 벤더 별로 구분되어 있음에도 불구하고 ANSI SQL 중 하나로 오라클에서도 돌아가고 My SQL에서도 돌아가고 SQL Server(My SQL), Maria DB, PostgreSQL 등 다양한 벤더 별 SQL에서도 돌아가는 JOIN 쿼리를 의미합니다. STANDARD JOIN은 ANSI JOIN이나 표준 조인이라고 부릅니다.
STANDARD JOIN에서 INNER JOIN, OUTER JOIN(LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN)이 있습니다.
FULL OUTER JOIN은 왼쪽과 오른쪽 테이블의 데이터가 모두 출력되는 방식으로 JOIN의 합집합입니다. 여기서 중복 값은 물론 없애집니다.
NATURAL JOIN은 2개의 테이블에서 A테이블과 B테이블에서 동일한 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 조인이 되는 방식입니다.
CROSS JOIN은 경우의 수처럼 조합할 수 있는 모든 경우를 출력하는 방식입니다. CROSS JOIN은 Cartesian Product라고 부릅니다.