23.04.27 데이터베이스

천용·2023년 4월 27일
0

데이터베이스

목록 보기
15/22

1. EQUI(INNER)

'EQUI' 조인은 일반적으로 Oracle SQL에서 INNER JOIN이라고도 불리는 조인 방법 중 하나입니다. 'EQUI' 조인은 두 개의 테이블에서 두 개의 칼럼 간의 값이 일치하는 경우에만 결과를 반환합니다.

보통 'EQUI' 조인은 두 테이블 간의 공통 칼럼을 사용하여 수행됩니다. 다음은 'EQUI' 조인을 수행하는 예시 쿼리입니다.

SELECT *
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;

위 쿼리에서는 table1과 table2라는 두 테이블을 INNER JOIN으로 조인합니다. ON 키워드를 사용하여 두 테이블을 어떤 조건으로 조인할지 지정합니다. table1.column_name = table2.column_name은 두 테이블 간의 공통 칼럼을 사용하여 조인한다는 것을 의미합니다.
USING 연산자는 두 개 이상의 테이블을 조인할 때 사용되는 연산자
USING 연산자를 사용하면 조인에 사용되는 칼럼을 지정가능

USING은 ON과 다릅니다. ON 연산자를 사용한 조인에서는 조인 조건을 일반적으로
테이블1.칼럼명 = 테이블2.칼럼명과 같이 작성하지만, USING 연산자를 사용한 조인에서는 조인에 사용되는 칼럼만을 나열합니다.

다음은 USING 연산자를 사용한 조인의 예시입니다.

FROM employees
INNER JOIN departments
USING (department_id);

위 예시에서는 employees와 departments 테이블을 department_id 칼럼을 사용하여 조인합니다. USING 연산자를 사용하면 departments.department_id = employees.department_id 대신에 USING 다음에 괄호 안에 조인에 사용되는 칼럼명만 나열하면 됩니다.

USING 연산자를 사용한 조인은 간결하고 가독성이 높은 코드를 작성가능 하지만 USING 연산자는 조인에 사용되는 칼럼명이 동일한 경우에만 사용할 수 있으며, 두 개 이상의 조인 칼럼을 사용하는 조인에는 사용할 수 없다.

2. NATURAL JOIN

NATURAL JOIN은 두 개 이상의 테이블을 조인할 때 사용하는 조인 방법 중 하나입니다. NATURAL JOIN은 두 테이블에서 이름이 같은 칼럼을 기준으로 자동으로 조인합니다.

즉, NATURAL JOIN은 USING 연산자와 비슷하지만 USING 연산자는 명시적으로 조인에 사용될 칼럼을 지정해주어야 하지만, NATURAL JOIN은 자동으로 동일한 칼럼명을 찾아서 조인합니다.

예를 들어, employees 테이블과 departments 테이블이 있을 때, 두 테이블 모두 department_id 칼럼을 가지고 있다면, 다음과 같이 NATURAL JOIN을 사용하여 두 테이블을 조인할 수 있습니다.

SELECT *
FROM employees
NATURAL JOIN departments;

위의 예시에서는 employees와 departments 테이블을 department_id 칼럼을 기준으로 자동으로 조인합니다.

NATURAL JOIN의 장점은 조인에 사용할 칼럼을 지정할 필요가 없기 때문에 코드가 간결하고 가독성이 높아집니다. 하지만 칼럼명이 중복될 경우 조인 결과가 예기치 않게 나올 수 있기 때문에 주의해야 합니다. 또한, NATURAL JOIN은 자동으로 동일한 칼럼명을 찾아서 조인하기 때문에, 이외의 조건으로 조인을 해야 할 경우에는 다른 조인 방법을 사용해야 합니다.

3. SELF JOIN

SELF JOIN은 하나의 테이블 내에서 자기 자신과 조인하는 것
즉, 하나의 테이블을 두 개의 별명(alias)으로 구분하여 조인하는 것

SELF JOIN은 한 테이블에서 여러 행 간에 관계를 분석하고 집계하는 데 사용됩니다. 예를 들어, 조직도 테이블에서 각 직원의 상사를 식별하는 경우에 SELF JOIN을 사용하여 직원과 상사 간의 관계를 분석할 수 있습니다.

SELF JOIN은 다양한 방식으로 구현할 수 있습니다. 가장 일반적인 방법은 하나의 테이블을 두 개의 별명으로 구분하고 JOIN 절에서 각 별명을 사용하여 자기 자신과 조인하는 것입니다. 이 때, 별명은 AS 키워드를 사용하여 지정할 수 있습니다.

예를 들어, employee 테이블에서 각 직원의 상사를 찾기 위해 SELF JOIN을 사용하는 쿼리는 다음과 같이 작성할 수 있습니다.

SELECT e.name AS employee_name, m.name AS manager_name
FROM employee e
JOIN employee m ON e.manager_id = m.employee_id;

위 쿼리는 employee 테이블에서 manager_id와 employee_id가 같은 행을 찾아서 조인합니다. 이 때, employee 테이블을 e와 m이라는 두 개의 별명으로 구분하여 사용합니다.

4. OUTER JOIN

OUTER JOIN은 두 개의 테이블에서 일치하지 않는 행도 포함하여 조인할 때 사용하는 방법
OUTER JOIN에는 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN 세 가지가 있습니다.

LEFT OUTER JOIN: 왼쪽 테이블의 모든 행과 오른쪽 테이블과 일치하는 행을 선택합니다. 일치하는 행이 없는 경우에는 NULL 값을 반환합니다.
RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행과 왼쪽 테이블과 일치하는 행을 선택합니다. 일치하는 행이 없는 경우에는 NULL 값을 반환합니다.
FULL OUTER JOIN: 양쪽 테이블의 모든 행을 선택합니다. 일치하는 행이 없는 경우에는 NULL 값을 반환합니다.
OUTER JOIN을 사용하면 두 개의 테이블에서 데이터를 비교하거나 결합할 때 일치하지 않는 데이터를 포함할 수 있습니다. 예를 들어, employees와 departments 테이블에서 각 직원이 속한 부서의 이름을 포함하여 모든 직원 정보를 검색하려면 LEFT OUTER JOIN을 사용할 수 있습니다.

SELECT e.employee_id, e.first_name, e.last_name, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON e.department_id = d.department_id;

위 쿼리는 employees 테이블과 departments 테이블을 department_id 필드를 기준으로 LEFT OUTER JOIN하여 모든 직원 정보와 해당하는 부서 이름을 반환합니다. LEFT OUTER JOIN을 사용하기 때문에 departments 테이블에 일치하는 부서 정보가 없는 경우에도 모든 직원 정보를 반환합니다.


1. where와 on의 차이

WHERE절은 결과 집합의 필터링을 위해 사용되고, ON절은 두 개의 테이블에서 일치하는 행을 찾기 위해 사용됩니다. WHERE절은 이미 결합된 테이블에서 필터링을 수행하지만, ON절은 테이블 간 결합에 대한 조건을 정의합니다. 따라서 ON절은 조인 자체에 필요한 조건을 지정하는 반면, WHERE절은 결과 집합에서 필터링을 수행합니다.

2. JOIN 구문을 사용할 때 조인 타입을 명시하지 않으면 일반적으로 INNER JOIN이 기본값으로 사용

profile
성장하는 개발자가 되자

0개의 댓글