MySQL에서 특정 테이블에 필드(컬럼)가 존재하는지 확인한 후 그 결과 집합을 반환하려면 SHOW COLUMNS 문에 WHERE 절을 조합하여 사용할 수 있습니다. 이 방법은 지정한 컬럼명이 테이블에 실제로 존재하는 경우 해당 컬럼의 상세 정보를 출력하고, 존재하지 않으면 빈 결과 집합(Empty set)을 반환합니다.
기본 문법
컬럼 존재 여부를 확인하는 기본적인 문법은 다음과 같습니다.
show columns from yourTableName where field='yourColumnName';
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserFirstName varchar(20),
UserLastName varchar(20),
UserAge int,
UserAddress varchar(200),
UserCountryName varchar(20)
);
Query OK, 0 rows affected (0.67 sec)위 테이블에는 UserId, UserFirstName, UserLastName, UserAge, UserAddress, UserCountryName 총 6개의 컬럼이 정의되어 있습니다.
컬럼 존재 여부 확인 쿼리 실행하기
다음은 'UserCountryName'이라는 필드가 존재하는지 확인하고 결과 집합을 반환하는 쿼리입니다.
mysql> show columns from DemoTable where field='UserCountryName';
쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
+-----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-------------+------+-----+---------+-------+ | UserCountryName | varchar(20) | YES | | NULL | | +-----------------+-------------+------+-----+---------+-------+ 1 row in set (0.01 sec)
'UserCountryName' 컬럼이 테이블에 존재하기 때문에 해당 컬럼의 데이터 타입(varchar(20)), NULL 허용 여부, 기본값 등의 상세 정보가 포함된 결과 집합이 반환되었습니다.
컬럼이 존재하지 않는 경우
반대로 테이블에 존재하지 않는 컬럼명을 조회하면 어떻게 되는지 살펴보겠습니다.
mysql> show columns from DemoTable where field='Marks';
DemoTable에는 'Marks'라는 컬럼이 없으므로 다음과 같이 빈 결과 집합이 반환됩니다.
Empty set (0.00 sec)
참고: INFORMATION_SCHEMA 활용하기
SHOW COLUMNS 외에도 INFORMATION_SCHEMA.COLUMNS 테이블을 조회하여 컬럼 존재 여부를 확인할 수 있습니다. 이 방법은 프로그래밍 로직에서 조건 분기 처리 시 더욱 유용하게 활용됩니다.
mysql> SELECT COUNT(*) AS ColumnExists FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'yourDatabaseName' AND TABLE_NAME = 'DemoTable' AND COLUMN_NAME = 'UserCountryName';
결과 값이 1이면 컬럼이 존재하고, 0이면 존재하지 않는 것입니다. 두 가지 방법을 상황에 맞게 활용하면 MySQL에서 컬럼 존재 여부를 손쉽게 검증할 수 있습니다.