MySQL 작업 중 테이블에 특정 열(column)이 실제로 존재하는지 확인해야 하는 경우가 종종 있습니다. 이를 확인하는 대표적인 방법은 크게 두 가지입니다.
- DESC 명령어 사용
- SHOW COLUMNS ... LIKE 구문 사용
예제 테이블 생성
먼저 설명에 사용할 테이블을 생성하겠습니다.
mysql> CREATE table ColumnExistDemo
-> (
-> UniqueId int,
-> UniqueName varchar(200),
-> UniqueAddress varchar(200)
-> );
Query OK, 0 rows affected (0.57 sec)
방법 1: DESC 명령어로 확인하기
DESC 명령어를 사용하면 테이블의 전체 열 목록과 함께 데이터 타입, NULL 허용 여부 등 의미 있는 정보를 한눈에 확인할 수 있습니다. 기본 문법은 다음과 같습니다.
DESC yourTableName;
실제로 위 쿼리를 적용해 열의 존재 여부를 확인해 보겠습니다.
mysql> DESC ColumnExistDemo;
실행 결과는 다음과 같습니다.
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| UniqueId | int(11) | YES | | NULL | |
| UniqueName | varchar(200) | YES | | NULL | |
| UniqueAddress | varchar(200) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
다만 이 방법은 테이블의 모든 열을 함께 출력하기 때문에, 특정 열 하나만 빠르게 확인하고 싶을 때는 다소 비효율적일 수 있습니다.
방법 2: SHOW COLUMNS ... LIKE로 확인하기 (권장)
두 번째 방법이 더 효율적입니다. LIKE 절을 활용하면 원하는 단일 열만 조회할 수 있기 때문입니다. 기본 문법은 다음과 같습니다.
SHOW COLUMNS FROM `yourTableName` LIKE 'yourColumnName';
실제로 위 쿼리를 적용해 'UniqueName' 열이 존재하는지 확인해 보겠습니다.
mysql> SHOW COLUMNS from `ColumnExistDemo` LIKE 'UniqueName';
실행 결과는 다음과 같습니다.
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| UniqueName | varchar(200) | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
1 row in set (0.00 sec)
결과 행이 반환되면 해당 열이 존재하는 것이고, 'Empty set'이 반환되면 해당 열이 존재하지 않는 것입니다. 이처럼 SHOW COLUMNS ... LIKE 구문을 활용하면 특정 열의 존재 여부를 간단하고 정확하게 판별할 수 있으므로, 단일 열 확인 시에는 이 방법을 사용하는 것이 좋습니다.