[MySQL] 데이터 존재 여부 검색



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 —> ‘해당 멤버는 존재하지 않습니다’ 메시지 띄우기

이런 식으로 코드를 짤 수 있는 것이다.



<참고>

위의 그림을 보면 exists함수를 썼을 때 이름이 exists(select * from test2 where member='faker')로 나와있다. 쿼리가 길어지면 이름 역시 더 길어진다. 이럴 때는 이름을 설정해주면 된다. 뒤에 as '이름'을 붙여보자.
아까처럼 쿼리문이 아닌 hi라는 이름으로 결과값을 반환한다.
이전글: [MySQL] INSERT문 여러 개 한 번에 넣기 다음글: Django로 hello world 띄우기[1]