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

MySQL에서 INFORMATION_SCHEMA.TABLES로 데이터베이스 내 테이블 존재 여부 확인하는 방법

MySQL에서 특정 테이블이 데이터베이스에 이미 존재하는지 확인해야 하는 경우가 종종 있습니다. 예를 들어, 테이블을 생성하기 전에 중복 생성 오류를 방지하고 싶거나, 스크립트 실행 전에 테이블 상태를 점검하고 싶을 때 유용합니다.

이럴 때 INFORMATION_SCHEMA.TABLES 뷰를 조회하면 간단하게 확인할 수 있습니다. INFORMATION_SCHEMA는 MySQL 서버 내 모든 데이터베이스의 메타데이터(테이블, 컬럼, 인덱스 등) 정보를 담고 있는 시스템 스키마입니다.

기본 문법

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'yourDatabaseName'
AND TABLE_NAME = 'yourTableName';
  • TABLE_SCHEMA: 조회하려는 데이터베이스(스키마) 이름
  • TABLE_NAME: 존재 여부를 확인하려는 테이블 이름

테이블이 존재하면 해당 테이블 이름이 결과로 반환되고, 존재하지 않으면 빈 결과 집합(Empty set)이 반환됩니다.

실제 사용 예시

Case 1: 테이블이 존재하는 경우

'sample' 데이터베이스에 'DemoTable'이라는 테이블이 있는지 확인해 보겠습니다.

mysql> SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'sample'
AND TABLE_NAME = 'DemoTable';

실행 결과는 다음과 같습니다.

+--------------+
| TABLE_NAME   |
+--------------+
| DemoTable    |
+--------------+
1 row in set (0.01 sec)

테이블이 존재하기 때문에 테이블 이름이 정상적으로 출력되었습니다.

Case 2: 테이블이 존재하지 않는 경우

이번에는 존재하지 않는 테이블 'DemoTable2'를 조회해 보겠습니다.

mysql> SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'sample'
AND TABLE_NAME = 'DemoTable2';

실행 결과는 다음과 같습니다.

Empty set (0.01 sec)

테이블이 없으므로 아무런 행도 반환되지 않습니다.

응용: CREATE TABLE IF NOT EXISTS와 함께 활용

애플리케이션 코드나 저장 프로시저에서 이 쿼리의 결과를 조건문으로 활용하면, 테이블이 없을 때만 생성하는 로직을 구현할 수 있습니다. 참고로 MySQL 5.0 이상에서는 CREATE TABLE IF NOT EXISTS 구문을 사용해 더 간단하게 처리할 수도 있지만, 테이블 존재 여부 자체를 프로그램에서 판별해야 하는 경우에는 위의 INFORMATION_SCHEMA 조회 방식이 가장 확실한 방법입니다.