Join

jiji·2023년 10월 21일
0

DataBase

목록 보기
3/14

📍 SQL

SELECT
  employees.id, employees.name, departments.department_name
FROM
  employees
INNER JOIN
  departments
ON
  employees.department_id = departments.id;

ANSI 조인의 종류

  1. INNER JOIN: 두 테이블 간의 일치하는 행만 결과에 포함합니다.
    • join 쓰면 INNER 생략되어있음
  2. LEFT OUTER JOIN: 왼쪽 테이블의 모든 행을 결과에 포함하고, 오른쪽 테이블에서 일치하는 행이 없는 경우 NULL 값을 사용합니다.
  3. RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 결과에 포함하고, 왼쪽 테이블에서 일치하는 행이 없는 경우 NULL 값을 사용합니다.
  4. FULL OUTER JOIN: 두 테이블의 모든 행을 결과에 포함하고, 일치하는 행이 없는 경우 NULL 값을 사용합니다.

JOIN ON (ANSI 표준 조인) - 조건

  1. FROM절 뒤, WHERE 절 앞
  2. JOIN 키워드 뒤에는 조인할 테이블명을 명시
  3. ON 키워드 뒤에는 조인 조건을 명시
  4. 조인 조건 서술부(ON절) 일반 조건 서술부 (WHERE절)를 분리해서 작성하는 방법
  5. ON절을 이용하면 JOIN 이후의 논리연산이나 서브쿼리와 같은 추가 서술이 가능

📍 오라클

ANSI 표준 방식과 유사

오라클 전용 조인 방식 → SQL문의 WHERE 절에서 조인 조건을 명시

  1. 오라클 INNER JOIN
    1. 두 테이블 간의 일치하는 행만 결과에 포함합니다. 이 경우, WHERE 절에서 두 테이블의 컬럼이 일치하는 조건을 명시합니다.
    • 2개 이상의 테이블이 공통된 컬럼에 의해 논리적으로 결합되는 조인기법
    • WHERE절에 사용된 컬럼들이 동등연산자(=)에 의해 조인

EQUL join (등가 조인) : inner, natural join
포괄 조인 : outer join

  1. 오라클 OUTER JOIN: 왼쪽 테이블의 모든 행을 결과에 포함하며, 오른쪽 테이블에서 일치하는 행이 없는 경우 NULL 값을 사용합니다. 이 경우, WHERE 절에서 (+) 기호를 사용하여 조인 조건을 명시합니다.

오라클 INNER JOIN (EQUI JOIN)

SELECT
  column1, column2, ...
FROM
  table1, table2
WHERE
  table1.column = table2.column; --join조인

오라클 OUTER JOIN

  • 이너조인시 매칭되는 값이 없으면 필터링에 걸러져서 나오지 않음
  • NULL 값도 보기 위해 사용 (조인 조건을 만족하지 않는 행들도 조회할 때 사용)

오라클에서는 LEFT OUTER JOIN과 RIGHT OUTER JOIN이 (+) 기호를 사용하여 표현됩니다.

오라클 LEFT OUTER JOIN

  • LEFT JOIN - OUTER 생략
  • 조인되는 왼쪽 테이블은 모두 조회하고, 오른쪽 테이블은 조인조건에 매칭된 것만 조회
  • 오른쪽은 매칭이 안되면 모든 컬럼이 NULL로 나옴
  • ORACLA - (+) 기호가 붙지 않을 쪽~ JOIN
  • WHERE 에 (+) 붙으면 JOIN 조건절
SELECT
  column1, column2, ...
FROM
  table1, table2
WHERE
  table1.column = table2.column(+);

오라클 RIGHT OUTER JOIN

  • 왼쪽 조인테이블, 오른쪽 조인테이블을 모두 보여주고 매칭되면 매칭데이터까지 합쳐서 보여줌
SELECT
  column1, column2, ...
FROM
  table1, table2
WHERE
  table1.column(+) = table2.column;

etc

CROSS JOIN(교차조인, Cartesian Product- 카디션 곱)

  • 조인되는 두 테이블을 곱집합을 반환한다.
  • 오라클과 SQL 둘 다 사용 가능
SELECT * FROM table1
CROSS JOIN table2;

0개의 댓글