test2라는 테이블이 있다. 여기서 member가 faker인 사람의 정보를 조회하고 싶다. 물론 DB에서는 조회하는 쿼리를 입력하면 바로 나온다.
mysql> select * from test2 where member=’faker’;
처음에 그런 생각이 들었다. exists가 데이터 존재 여부를 검색하는 함수라고 하는데 exist를 쓰지않고도 위처럼 쿼리를 넣으면 바로 결과가 나와서 굳이 쓸 필요가 있나 싶었다. 하지만 이건 DB에서 작업할 때의 얘기고 다른 시스템과 결합되면 얘기는 달라진다.
예를 들어, 각 멤버들을 조회하는 챗봇이 있다고 가정하자. 만약 해당 멤버가 있으면 DB의 값들을 불러오고, 없으면 ‘해당 멤버는 존재하지 않습니다’라고 메시지를 띄우고 싶다. 이럴 때 exists함수를 이용하면 편하다.
exists함수는 ()안의 쿼리가 참이면 1을 반환하고, 거짓이면 0을 반환한다.
test2의 member컬럼에 ‘faker’가 있기 때문에 ‘select * from test2 where member=’faker’;’는 참이 돼 exists 함수는 1을 반환하게 된다. 아까 했던 얘기와 연결시켜 보면
select exists(‘멤버 조회하는 쿼리’); = 1 —> DB값 불러오기
select exists(‘멤버 조회하는 쿼리’); = 0 —> ‘해당 멤버는 존재하지 않습니다’ 메시지 띄우기
이런 식으로 코드를 짤 수 있는 것이다.