MySQL 테이블이 존재 여부 확인 쿼리

Reading time ~1 minute

테이블이 존재 여부 확인

SELECT 1 FROM Information_schema.tables
WHERE table_schema = 'DB명'
AND table_name = '테이블명'

결과에 따라 1 또는 아무것도 반환 하지 않습니다.

SELECT COUNT(*) FROM Information_schema.tables
WHERE table_schema = 'DB명'
AND table_name = '테이블명'

결과에 따라 1 또는 0을 반환 합니다.

SELECT EXISTS (
  SELECT 1 FROM Information_schema.tables
  WHERE table_schema = 'DB명'
  AND table_name = '테이블명'
) AS flag

결과에 따라 flag = 1 또는 flag = 0을 반환 합니다.

COUNT의 경우 이름에서 유추 할 수 있다시피 갯수를 세고, EXISTS의 경우 ROW가 존재하는지 아닌지를 확인 하는 차이가 있습니다.


만약 테이블 생성 때 확인 하는 것이라면

create table if not exists "table name" values;

if not exists를 통해 테이블이 없을 때만 생성 하면 됩니다!

제타위키, EXISTS와 IN의 차이