Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 쿼리가 행을 반환하지 않으면 어떻게 될까?

MySQL은 쿼리를 실행한 후 결과 집합(result set)에 포함된 행의 개수와 함께 쿼리 실행 시간까지 명확하게 출력해 줍니다. 이를 통해 사용자는 쿼리가 실제로 몇 개의 데이터를 가져왔는지, 그리고 얼마나 걸렸는지 한눈에 파악할 수 있습니다.

행이 있는 경우의 출력 예시

예를 들어 아래의 MySQL 실행 결과에서는 결과 집합에 3개의 행이 존재한다는 것을 확인할 수 있습니다.

mysql> Select * from ratelist ORDER BY Price LIMIT 3;
+----+------+-------+
| Sr | Item | Price |
+----+------+-------+
|  5 | T    |   250 |
|  1 | A    |   502 |
|  2 | B    |   630 |
+----+------+-------+
3 rows in set (0.00 sec)

출력 하단의 "3 rows in set"이라는 메시지가 결과 집합에 3개의 행이 있다는 것을 알려주며, 괄호 안의 시간은 쿼리 실행에 소요된 시간을 의미합니다.

반환할 행이 없는 경우

그렇다면 쿼리 조건에 맞는 데이터가 하나도 없어서 결과 집합으로 반환할 행이 없을 때는 어떻게 될까요? 이 경우 MySQL은 Empty Set(빈 집합)과 함께 실행 시간을 출력합니다.

즉, MySQL은 오류(error)를 발생시키지 않고 단순히 데이터가 없다는 사실만 조용히 알려줍니다. 이는 쿼리 자체가 잘못된 것이 아니라, 조건에 일치하는 레코드가 존재하지 않는다는 정상적인 결과이기 때문입니다.

다음 예제는 가격(price)이 2000보다 큰 상품을 조회하는 쿼리로, 해당하는 데이터가 테이블에 없기 때문에 빈 집합이 반환됩니다.

mysql> Select * from ratelist where price > 2000;
Empty set (0.08 sec)

실행 결과에서 볼 수 있듯이, MySQL은 "Empty set"이라는 메시지와 함께 쿼리 실행 시간을 출력하며, 어떠한 데이터도 반환하지 않습니다.

정리

  • 결과 집합에 행이 있으면 행 개수와 실행 시간이 함께 출력됩니다.
  • 조건에 맞는 행이 없으면 오류 없이 Empty set과 실행 시간만 반환됩니다.
  • 빈 결과는 쿼리 실패가 아니라 "일치하는 데이터가 없다"는 정상적인 응답입니다.