본문 바로가기
프로그래밍 언어(Programming Languages)/SQL

[SQL] SQL에서 IN과 EXISTS 사용법 알아보기! 💻✨

by 데이터 벌집 2024. 11. 7.
반응형

 

SQL을 다루다 보면, 다른 테이블의 값에 따라 데이터를 필터링해야 할 때가 자주 있습니다. 🤔 이때 사용할 수 있는 두 가지 대표적인 방법이 바로 INEXISTS입니다. 두 방법 모두 서브쿼리의 값을 확인하는 데 사용되지만, 동작 방식과 성능 측면에서 조금씩 차이가 있어요. 🚀

이번 포스팅에서는 INEXISTS가 무엇인지, 각각 어떻게 동작하는지, 언제 사용하는 것이 좋을지에 대해 알아보겠습니다! 예제도 함께 보면서 쉽게 이해해봐요! 📝😊

 

[SQL] SQL에서 IN과 EXISTS 사용법 알아보기! 💻✨

 

 

IN 절이란 무엇인가요? 🧐

IN 절은 리스트나 서브쿼리의 값을 기준으로 결과 집합을 필터링할 때 사용합니다. 쉽게 말해 "이 값이 이 리스트에 있니?" 라고 묻는 거죠. 만약 있다면 그 행은 결과에 포함됩니다. 👇

 

예시: 리스트와 함께 사용하는 IN

 

toys라는 테이블이 있다고 가정해볼게요. 👇

 

toy_id name color

1 Teddy Bear Brown
2 Lego Red
3 Doll Pink
4 Car Blue
5 Ball Green

 

이제 색깔이 Red 또는 Blue인 장난감을 찾고 싶다고 해봅시다. 😄

SELECT name
FROM toys
WHERE color IN ('Red', 'Blue');

 

결과:

name
Lego
Car

 

IN 절은 각 장난감의 색깔을 확인하고, Red 또는 Blue인 경우 결과에 포함시킵니다. 🙌

EXISTS 절이란 무엇인가요? 🤔

EXISTS 절은 서브쿼리가 행을 반환하는지 여부를 확인하는 데 사용됩니다. IN과 달리 값이 일치하는지 확인하는 것이 아니라, 서브쿼리가 적어도 하나의 행을 찾으면 조건이 참이 됩니다. 😊

 

예시: 서브쿼리와 함께 사용하는 EXISTS

 

같은 toysorders 테이블을 사용해서 주문된 적이 있는 장난감을 찾아봅시다. 이번에는 EXISTS를 사용해볼게요! 👇

SELECT name
FROM toys t
WHERE EXISTS (
    SELECT 1
    FROM orders o
    WHERE o.toy_id = t.toy_id
);

결과:

name
Teddy Bear
Lego
Doll
Car

toys 테이블의 행에 대해, EXISTS 절은 서브쿼리를 실행하여 orders 테이블에 같은 toy_id가 있는지 확인합니다. 🤓

INEXISTS의 차이점은 무엇인가요? 🤷‍♀️🤷‍♂️

  • 성능 측면: IN은 서브쿼리가 한 번 실행되고 그 결과가 메모리에 저장됩니다. 반면, EXISTS는 외부 쿼리의 각 행에 대해 서브쿼리가 실행됩니다.
  • NULL 처리: IN은 서브쿼리가 NULL을 반환하면 예상치 못한 결과를 초래할 수 있지만, EXISTS는 NULL 값 여부와 상관없이 행이 있는지 확인합니다.
  • 사용 케이스: IN은 비교할 값이 적거나 서브쿼리가 작을 때 적합하고, EXISTS는 서브쿼리 결과가 크거나 복잡할 때 유리합니다.

언제 IN을 사용해야 하나요? 🤔

  • 리스트나 작은 서브쿼리 결과와 비교하고 싶을 때.
  • 간단한 비교가 필요할 때 좋습니다. 😄

언제 EXISTS를 사용해야 하나요? 🤓

  • 다른 테이블에 데이터가 존재하는지를 확인할 때.
  • 서브쿼리의 결과가 크거나 복잡한 경우에 유리합니다.

결론 ✨

INEXISTS는 모두 SQL에서 강력한 도구입니다. 차이점을 잘 이해하고 상황에 맞게 사용하면 성능을 크게 향상시킬 수 있어요! 🏆

  • IN: 값 리스트나 작은 서브쿼리 결과를 비교할 때 사용하세요.
  • EXISTS: 다른 테이블에서 행이 존재하는지 확인하고 싶을 때 사용하세요.

 

반응형