SQL Server/실기 정리

SQL Server 36강 - EXISTS 와 NOT EXISTS 서브쿼리

코딩하는냥이 2025. 6. 4. 12:45
반응형

이번 글에서는 EXISTS, NOT EXISTS를 사용하여 서브쿼리 결과가 존재하는지에 따라 조건을 판단하는 방법을 배웠습니다.
이 문법은 "특정 조건을 만족하는 데이터가 있는가?"를 확인하는 데 매우 효과적입니다.


📌 예제 코드 ①: EXISTS가 참일 때

SELECT * 
FROM nasdaq_company
WHERE EXISTS (
    SELECT symbol 
    FROM nasdaq_company 
    WHERE symbol IN ('MSFT', 'AMD', 'AMZN')
);

💬 설명

  • 서브쿼리가 하나 이상의 결과를 반환하면 EXISTS는 TRUE
  • 결과적으로 nasdaq_company 테이블의 모든 행이 반환됨
  • 이 조건문은 단순히 서브쿼리 결과의 유무만 판단하고, 메인 쿼리와의 연결 조건은 없음

📌 예제 코드 ②: EXISTS가 거짓일 때

SELECT * 
FROM nasdaq_company
WHERE EXISTS (
    SELECT symbol 
    FROM nasdaq_company 
    WHERE symbol IN ('123', '456', '789')
);

💬 설명

  • 서브쿼리가 결과를 반환하지 않음
  • 따라서 EXISTS는 FALSE가 되고, 아무 결과도 출력되지 않음

📌 예제 코드 ③: NOT EXISTS가 참일 때

SELECT * 
FROM nasdaq_company
WHERE NOT EXISTS (
    SELECT symbol 
    FROM nasdaq_company 
    WHERE symbol IN ('123', '456', '789')
);

💬 설명

  • 서브쿼리가 결과를 반환하지 않음 → NOT EXISTS는 TRUE
  • 따라서 nasdaq_company의 모든 행이 출력됨

💡 포인트 정리

  • EXISTS (서브쿼리)는 결과가 존재하면 TRUE
  • NOT EXISTS (서브쿼리)는 결과가 존재하지 않을 때 TRUE
  • EXISTS는 서브쿼리의 실제 값이 아니라 존재 여부만 확인
  • 메인 쿼리와의 연결 조건이 없다면 전체 행을 반환하거나 전혀 반환하지 않음

📌 정리하자면, 이번 강의에서는 EXISTS와 NOT EXISTS 구문을 사용해
서브쿼리의 결과 존재 여부에 따라 조건 분기하는 방법을 배웠습니다.
특히 다른 테이블과의 조건 연결에 많이 사용되며,
필터링 전 존재 검사를 해야 하는 로직에서 효율적으로 활용됩니다.