📍 SQL
SELECT
employees.id, employees.name, departments.department_name
FROM
employees
INNER JOIN
departments
ON
employees.department_id = departments.id;
ANSI 조인의 종류
- INNER JOIN: 두 테이블 간의 일치하는 행만 결과에 포함합니다.
- LEFT OUTER JOIN: 왼쪽 테이블의 모든 행을 결과에 포함하고, 오른쪽 테이블에서 일치하는 행이 없는 경우 NULL 값을 사용합니다.
- RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 결과에 포함하고, 왼쪽 테이블에서 일치하는 행이 없는 경우 NULL 값을 사용합니다.
- FULL OUTER JOIN: 두 테이블의 모든 행을 결과에 포함하고, 일치하는 행이 없는 경우 NULL 값을 사용합니다.
JOIN ON (ANSI 표준 조인) - 조건
- FROM절 뒤, WHERE 절 앞
- JOIN 키워드 뒤에는 조인할 테이블명을 명시
- ON 키워드 뒤에는 조인 조건을 명시
- 조인 조건 서술부(ON절) 일반 조건 서술부 (WHERE절)를 분리해서 작성하는 방법
- ON절을 이용하면 JOIN 이후의 논리연산이나 서브쿼리와 같은 추가 서술이 가능
📍 오라클
ANSI 표준 방식과 유사
오라클 전용 조인 방식 → SQL문의 WHERE 절에서 조인 조건을 명시
- 오라클 INNER JOIN
- 두 테이블 간의 일치하는 행만 결과에 포함합니다. 이 경우, WHERE 절에서 두 테이블의 컬럼이 일치하는 조건을 명시합니다.
- 2개 이상의 테이블이 공통된 컬럼에 의해 논리적으로 결합되는 조인기법
- WHERE절에 사용된 컬럼들이 동등연산자(=)에 의해 조인
EQUL join (등가 조인) : inner, natural join
포괄 조인 : outer join
- 오라클 OUTER JOIN: 왼쪽 테이블의 모든 행을 결과에 포함하며, 오른쪽 테이블에서 일치하는 행이 없는 경우 NULL 값을 사용합니다. 이 경우, WHERE 절에서 (+) 기호를 사용하여 조인 조건을 명시합니다.
오라클 INNER JOIN (EQUI JOIN)
SELECT
column1, column2, ...
FROM
table1, table2
WHERE
table1.column = table2.column;
오라클 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;