MySQL에서 테이블의 열(컬럼) 이름이 대소문자 혼합으로 정의되어 있을 때, 이를 모두 소문자로 변환하여 조회하고 싶은 경우가 있습니다. 이럴 때는 INFORMATION_SCHEMA.COLUMNS 뷰와 LOWER() 함수를 함께 사용하면 간단하게 해결할 수 있습니다.
1. 예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserFirstName varchar(20),
UserLastName varchar(20),
UserAge int,
UserCountryName varchar(20)
);
Query OK, 0 rows affected (0.27 sec)2. 테이블 구조 확인하기
DESC 명령으로 테이블 구조를 확인하면 열 이름이 대문자로 시작하는 것을 볼 수 있습니다.
mysql> desc DemoTable;
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
+-----------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-------------+------+-----+---------+----------------+ | UserId | int(11) | NO | PRI | NULL | auto_increment | | UserFirstName | varchar(20) | YES | | NULL | | | UserLastName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | | UserCountryName | varchar(20) | YES | | NULL | | +-----------------+-------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec)
3. 열 이름을 소문자로 변환하여 조회하기
열 이름을 소문자로 변환하려면 INFORMATION_SCHEMA.COLUMNS에서 해당 테이블의 열 정보를 가져온 뒤, LOWER() 함수를 적용하면 됩니다.
mysql> SELECT LOWER(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'DemoTable';
실행 결과는 다음과 같습니다.
+--------------------+ | LOWER(COLUMN_NAME) | +--------------------+ | userage | | usercountryname | | userfirstname | | userid | | userlastname | +--------------------+ 5 rows in set (0.03 sec)
정리
INFORMATION_SCHEMA.COLUMNS는 데이터베이스 내 모든 테이블의 열 메타데이터를 담고 있는 시스템 뷰입니다. 여기서 COLUMN_NAME 값을 LOWER() 함수로 감싸면 원래 정의된 대소문자와 관계없이 모든 열 이름을 소문자로 일관되게 출력할 수 있습니다. 참고로 특정 데이터베이스의 테이블만 조회하려면 WHERE table_schema = '데이터베이스명' 조건을 추가하는 것이 좋습니다.