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

MySQL에서 테이블 존재 여부를 확인하는 방법

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 등)와 연동할 때 조건 분기를 처리하기에 유용하므로, 상황에 맞게 적절한 방법을 선택해 사용하시면 됩니다.