본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT/SQL

SQL 문법 | 집합연산자 | EXISTS

by dazwischen 2021. 9. 20. 01:00
반응형

이번 포스트에서는 EXISTS라는 집합연산자에 대해서 알아본다. 한 셋 / 테이블 안에 특정 데이터가 존재하는지 여부를 판단하기 위해 사용하며 존재 여부를 파악한 후에는 작동을 멈추기 때문에 성능면에서도 모든 내용을 비교해야 하는 타 연산자들에 비해 목적에 따라 성능적 이익을 취할 수 있다.

EXISTS

SQL 집합연산자 EXISTS

01 EXISTS : 존재하는 지만 궁금하다

데이터의 양에 상관없이 존재 여부만으로 다른 작업을 시행할지 말지를 결정하는 경우가 있다. 이럴 경우 그 특정 데이터가 일단 하나만 존재하는지 알면 된다. 그럴 때 사용하는 것이 EXISTS이다. 일단 쿼리를 어떻게 작성하는지 살펴보자.

SELECT	M.COL1, M.COL2
FROM	TABLE M
WHERE	EXISTS (SELECT 1 FROM SUB_TABLE S WHERE S.COL='VAL')
;

EXISTS절 내의 SUB_TABLE에서 COL이란 컬럼 안에 VAL이란 값이 존재한다면 메인 쿼리 내의 TABLE에서 COL1과 COL2값을 보여준다. 서브쿼리에서 SELECT절에서 1을 사용한 이유는 WHERE 절이 TRUE인 경우 SELECT절이 읽어질 때 1값을 반환하기 위해서 이다. 1은 TRUE라는 의미이기 때문에 메인절의 WHERE절 전체가 TRUE가 되는 효과가 나타난다.

EXAMPLE

봉사활동 신청 학생이 있다면 올 해 봉사활동 가능한 기간의 리스트를 알려주세요.

SELECT	A.기관, A.신청기간
FROM	봉사활동기관리스트 A
WHERE	EXISTS ( SELECT 1 FROM 학생명단 S WHERE S.봉사활동신청 = TRUE )
;

02 EXISTS의 성능적 이점

EXISTS 연산자의 특징은 일단 원하는 결과가 나오면 연산을 멈춘다는 것이다. 때문에 여부만 알면 될 경우 모든 테이블을 읽으면서 발생하는 데이터베이스 서버 리소스 낭비를 줄일 수 있다.

SUMMARY : EXISTS

  • EXISTS 연산자는 WHERE절 내에서 특정 데이터가 존재하는 지 여부만을 판단할 때 사용가능하다.
  • 원하는 데이터를 찾으면 연산을 멈추기 때문에 데이터베이스 리소스 낭비를 막을 수 있다.
반응형

댓글