본문 바로가기
자격증/SQLD

SQL 기본 및 활용 - SQL기본 - JOIN

by Love of fate 2024. 3. 2.
728x90
반응형

(1) JOIN 이란?

 - 일상생활에서 '조인'이라는 단어는 각기 다른 두 개의 집단이 합해질 때 주로 쓰인다.

 - 각기 다른 테이블을 한 번에 보여줄 때 쓰이는 쿼리이다.

 

(2) EQUI JOIN

 - EQUI JOIN은 Equal(=)  조건으로 JOIN하는 것으로 가장 흔히 볼 수 있는 JOIN의 방식이라고 할 수 있다. 

 

(3) Non EQUI JOIN 

 - Non EQUI JOIN은 Equal(=) 조건이 아닌 다른 조건 (BEWEEN, >, >=, <, <=)으로 JOIN하는 방식이다.

 

(4) 3개 이상 TABLE JOIN 

 - JOIN 쿼리를 좀 더 확장해서 3개 이상의 테이블을 JOIN할 수도 있다. 

 

(5) OUTER JOIN

 - OUTER JOIN은 앞서 본 JOIN과는 다르게 JOIN 조건에 만족하지 않는 행들도 출력되는 형태이다.

 - LEFT OUTER JOIN의 경우 LEFT TABLE과 RIGHT TABLE의 데이터 중 JOIN에 성공한 데이터와 JOIN에 성공하지 

   못한 나머지 LEFT TABLE의 데이터가 함께 출력된다.

 - Oracle에서는 모든 행이 출력되기 테이블의 반대편 테이블의 옆에 (+) 기호를 붙여 작성해주면 된다. 

 


[08] STANDARD JOIN 

 - DBMS에도 벤더가 여러 개 존재한다. RDBMS를 벤더별로 구분해보자하면  Oracle, SQL Server(MSSQL), MariaDB, PostgreSQL 등이 있는데, 벤더마다 SQL 문법에 차이가 너무 클 경우 호환성 이슈가 발생하고 SQL을 사용하는 사람들 입장에서도 효율성이 떨어지기 때문에 표준이 되는 ANSI SQL을 지정하게 되었다. STANDARD JOIN은 ANSI SQL 중 하나로 쉽게 말해 Oracle에서도 돌아가고 MySQL에서도 돌아가는 JOIN 쿼리라고 생각하면 된다. 

* STANDARD JOIN보다는 ANSI JOIN, 표준 조인이라는 말이 많이 쓰임

(1) INNER JOIN 

 - JOIN 조건에 충족하는 데이터만 출력되는 방식이다.

 - JOIN 조건을 ON절에 사용하여 작성해야 한다.

 

(2) OUTER JOIN 

 - JOIN 조건에 충족하는 데이터가 아니어도 출력될 수 있는 방식이다. 

  

  1) LEFT OUTER JOIN

    - SQL에서 왼쪽에 표기된 테이블의 데이터는 무조건 출력되는 JOIN 이다.

    - 오른쪽 테이블에 JOIN되는 데이터가 없는 ROW들은 오른쪽 테이블 컬럼의 값이 NULL로 출력된다.

 

  2) RIGHT OUTER JOIN 

    - SQL에서 오른쪽에 표기된 테이블의 데이터는 무조건 출력되는 방식이다.

    - 왼쪽 테이블에 JOIN되는 데이터가 없는 Row들은 왼쪽 테이블 컬럼의 값이 NULL로 출력된다.

 

  3) FULL OUTER JOIN

    - 왼쪽, 오른쪽 테이블의 데이터가 모두 출력되는 방식이다. 

      LEFT OUTER JOIN과 RIGHT OUTER JOIN의 합집합이라고 이해하면 쉽다. (중복값은 제거) 

 

(3) NATURAL JOIN 

  -  A테이블과 B테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN이 되는 방식이다.

  - Oracle에서는 USING 조건절을 이용하여 같은 이름을 가진 컬럼 중 원하는 컬럼만  JOIN에 이용할 수 있다. 

  - SELECT 절에서 USING  절로 정의된 컬럼 앞에는 별도의 ALIAS나 테이블명을 붙이지 않아야 한다. 

 

(4) CROSS JOIN

  - CROSS JOIN은 A테이블과 B 테이블 사이에 JOIN 조건이 없는 경우, 조합할 수 있는 모든 경우를 출력하는 방식이다. 

다른말ㄹ고 Cartesian Product라고 표현하기도 한다.

728x90
반응형