본문 바로가기

IT/Oracle

오라클 EXIST 구문

300x250

Oracle 데이터베이스에서 EXISTS 구문은 서브쿼리의 결과가 존재하는지 여부를 검사할 때 사용됩니다. EXISTS 조건은 서브쿼리가 하나 이상의 행을 반환할 때 참이 됩니다. 일반적으로 EXISTS는 효율적으로 존재 여부를 확인하는데 사용되며, 이는 서브쿼리가 실제로 반환하는 데이터보다는 서브쿼리의 조건에 맞는 행이 있는지 여부만 확인하기 때문입니다.
다음은 EXISTS 구문을 사용하는 예제입니다:


예제 1: 기본 사용법


다음 예제는 특정 부서에 속한 직원이 있는지 확인합니다.

SELECT department_name
FROM departments d
WHERE EXISTS (
    SELECT 1
    FROM employees e
    WHERE e.department_id = d.department_id
);

 
이 쿼리는 각 부서에 속한 직원이 존재하는 부서의 이름을 반환합니다.

예제 2: NOT EXISTS

 
EXISTS의 반대인 NOT EXISTS도 자주 사용됩니다. 다음 예제는 특정 부서에 속한 직원이 없는 부서의 이름을 반환합니다.

SELECT department_name
FROM departments d
WHERE NOT EXISTS (
    SELECT 1
    FROM employees e
    WHERE e.department_id = d.department_id
);

 
이 쿼리는 각 부서에 속한 직원이 존재하지 않는 부서의 이름을 반환합니다.
 

예제 3: 상관 서브쿼리

 
상관 서브쿼리는 외부 쿼리의 행과 연관되어 있는 서브쿼리입니다. 다음 예제는 직원이 없는 부서의 이름과 해당 부서 ID를 반환합니다.

SELECT department_name, department_id
FROM departments d
WHERE NOT EXISTS (
    SELECT 1
    FROM employees e
    WHERE e.department_id = d.department_id
);

 

예제 4: 복잡한 조건과 함께 사용
 

다음 예제는 특정 조건을 만족하는 행이 있는지 확인하는 복잡한 조건과 함께 사용한 예입니다.

SELECT employee_id, first_name, last_name
FROM employees e
WHERE EXISTS (
    SELECT 1
    FROM departments d
    WHERE d.department_id = e.department_id
    AND d.location_id = 1700
);

 
이 쿼리는 위치 ID가 1700인 부서에 속한 직원의 ID, 이름 및 성을 반환합니다.
EXISTS 구문은 효율적으로 존재 여부를 확인할 수 있으며, 복잡한 조건을 포함한 다양한 상황에서 유용하게 사용될 수 있습니다.

300x250