혁신을 이룹니다, 오딘박스(OdinBOX)

언제나 어디서나 오딘박스와 함께!

SQL, EXIST, NOT EXIST 알아보기

간지뽕빨리턴님 2023. 2. 25. 23:55
반응형

SQL,POSTGRESQL,ORACLE,QUERY,쿼리,조건,DBEVER

EXISTS와 NOT EXISTS의 사용방법을 간단하고 쉽게 알려드립니다.

SQL을 사용하다 보면 다양한 조건에서 다양한 결과 그리고 사용자가 원하는 결과에 도출을 해야 하는데 어떠한 것을 포함하거나 포함하지 않는 결과를 보여줘야 할 때 이번에 설명할 EXIST와 NOT EXIST를 적절하게 사용을 한다면 원하는 결과를 도출을 할 수 있다는 생각을 합니다 저 또한 아직 배우고 있는 입장이지만 개념과 함께 어떻게 사용을 하면 될지 적으려고 합니다.

목차

    EXIST, NOT EXIST

    EXIST

    쉽게 말한다면 "메인 테이블(Main Table)블과 서브 테이블(Sub Table)과 비교하여 EXIST의 존재하는 조건이 포함하는 것을 보여줘!" 이런 느낌이라고 생각하시면 조금 더 이해가 편할 것 같습니다.

    EXIST 사용방법

    SELECT [조회필드명]
    FROM [테이블명]
    WHERE [조건]
    AND EXISTS (SELECT 1 FROM [테이블명] WHERE [조건])

    EXISTS에 사용하는 부분을 보면 SELECT 1이라고 사용이 되어있는데 사실 SELECT절은 필요가 없기 때문에 쓸모없는 1을 넣는다고 합니다.

    NOT EXISTS

    위 EXISTS와 반대의 개념으로 "내가 NOT EXISTS에 적은 조건이 존재하지 않을 때 결과를 출력해 줘!"라고 생각하시면 이해가 조금 더 쉬울 것 같습니다.

    NOT EXISTS 사용방법

    SELECT [조회필드명]
    FROM [테이블명]
    WHERE [조건]
    AND NOT EXISTS (SELECT 1 FROM [테이블명] WHERE [조건])

    총정리

    여기서 궁금한 점이 있습니다. 바로 IN을 사용하여 결과를 얻어도 똑같은 결과를 가져올 수 있다는 것입니다. 그러나 문제가 있습니다. 바로 속도가 느리기 때문에 EXISTS와 JOIN을 활용하여 사용하는 것이 조금 더 좋다는 것입니다. JOIN을 활용할 경우 EXISTS를 사용할 때보다 속도가 조금 더 빠르겠지만 중복된 값이 많이 나올 경우를 생각한다면 EXISTS가 조금 더 빠릅니다. 

    마무리

    정말 간단하고 쉽게 EXISTS와 NOT EXISTS에 대해서 알아봤습니다. 여러분은 이 글을 보고 이해가 조금은 되셨나요? 혹시나 수정을 해야 하거나 설명이 부족한 점이 있다면 댓글을 통해 알려주시면 추가 및 수정하도록 하겠습니다 그리고 궁금한 점이 있다면 마찬가지로 댓글을 남겨주시면 답변드리도록 하겠습니다.