MySQL에서 테이블 존재 여부 확인하기
MySQL에서 특정 테이블이 데이터베이스에 존재하는지 확인하려면 INFORMATION_SCHEMA.TABLES를 활용하는 것이 가장 확실한 방법입니다. INFORMATION_SCHEMA는 MySQL 서버 내의 모든 데이터베이스, 테이블, 컬럼 등의 메타데이터를 담고 있는 시스템 스키마로, 이를 조회하면 테이블의 존재 여부를 손쉽게 파악할 수 있습니다.
기본 문법
select table_name from information_schema.tables where table_schema=database() and table_name=yourTableName;
위 쿼리는 현재 접속 중인 데이터베이스(database())에서 지정한 이름의 테이블을 검색합니다. 결과가 반환되면 해당 테이블이 존재하는 것이고, 빈 결과가 반환되면 존재하지 않는 것입니다.
예제: 테이블 생성
실습을 위해 먼저 예제용 테이블을 하나 생성해 보겠습니다.
mysql> create table DemoTable2032
-> (
-> ClientId int,
-> ClientName varchar(20),
-> ClientAge int,
-> ClientCountryName varchar(20)
-> );
Query OK, 0 rows affected (1.07 sec)클라이언트 정보를 저장하는 간단한 테이블이 성공적으로 생성되었습니다.
테이블 존재 여부 조회
이제 위에서 만든 테이블이 실제로 데이터베이스에 존재하는지 확인하는 쿼리를 실행해 보겠습니다.
mysql> select table_name from information_schema.tables -> where table_schema=database() -> and table_name='DemoTable2032';
쿼리 실행 결과는 다음과 같습니다.
+---------------+ | TABLE_NAME | +---------------+ | demotable2032 | +---------------+ 1 row in set (0.00 sec)
결과 해석
결과 집합에 테이블 이름이 출력되었다면 해당 테이블이 현재 데이터베이스에 존재한다는 의미입니다. 반대로 아무런 행도 반환되지 않으면(Empty set) 테이블이 존재하지 않는다는 뜻입니다.
추가 팁
MySQL 5.0 이상 버전에서는 더욱 간편하게 SHOW TABLES LIKE 구문을 사용할 수도 있습니다.
SHOW TABLES LIKE 'DemoTable2032';
또한 애플리케이션 코드에서 테이블 생성 전에 중복 오류를 피하고 싶다면 다음과 같이 CREATE TABLE IF NOT EXISTS 구문을 사용하는 것도 좋은 방법입니다.
CREATE TABLE IF NOT EXISTS DemoTable2032 ( ClientId int, ClientName varchar(20), ClientAge int, ClientCountryName varchar(20) );
INFORMATION_SCHEMA를 직접 조회하는 방식은 프로그래밍 언어(PHP, Python, Java 등)와 연동할 때 조건 분기를 처리하기에 유용하므로, 상황에 맞게 적절한 방법을 선택해 사용하시면 됩니다.