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

MySQL에서 단일 쿼리로 모든 열 이름을 소문자로 변환하는 방법

MySQL에서 단일 쿼리로 모든 열 이름을 소문자로 변환하기

데이터베이스를 운영하다 보면 테이블의 열(컬럼) 이름이 대소문자로 뒤섞여 있어 일관성을 위해 모두 소문자로 통일해야 할 때가 있습니다. MySQL에서는 information_schema.columns 시스템 뷰와 CONCAT() 함수를 조합하면 필요한 ALTER TABLE 문을 자동으로 생성해 손쉽게 처리할 수 있습니다.

1단계: 샘플 테이블 생성

먼저 대소문자가 혼합된 열 이름을 가진 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1
    -> (
    -> StudentFirstName varchar(20),
    -> StudentLastName varchar(20),
    -> StudentAge int,
    -> StudentCountryName varchar(20)
    -> );
Query OK, 0 rows affected (4.20 sec)

2단계: 열 이름을 소문자로 바꾸는 쿼리 작성

information_schema.columns에서 해당 데이터베이스('demo')의 모든 열을 조회한 뒤, CONCAT 함수로 ALTER TABLE ... CHANGE 구문을 동적으로 만들어냅니다. lower(column_name)이 기존 열 이름을 소문자로 변환하고, column_type은 원래의 데이터 타입을 그대로 유지해 줍니다.

mysql> select concat('alter table ', table_name, ' change `', column_name, '` `',
    -> lower(column_name), '` ', column_type, ';')
    -> from information_schema.columns where table_schema = 'demo';

실행 결과 확인

쿼리를 실행하면 스키마 내 모든 테이블의 열에 대해 아래와 같은 ALTER TABLE 문이 문자열 형태로 출력됩니다.

+-----------------------------------------------------------------------------------------------------------------+
| concat('alter table ', table_name, ' change `', column_name, '` `', lower(column_name), '` ', column_type, ';') |
+-----------------------------------------------------------------------------------------------------------------+
| alter table demotable1 change `StudentFirstName` `studentfirstname` varchar(20);                              |
| alter table demotable1 change `StudentLastName` `studentlastname` varchar(20);                                |
| alter table demotable1 change `StudentAge` `studentage` int(11);                                               |
| alter table demotable1 change `StudentCountryName` `studentcountryname` varchar(20);                          |
| alter table mytable change `MyEuroColumn` `myeurocolumn` varchar(5);                                          |
+-----------------------------------------------------------------------------------------------------------------+
5 rows in set (0.00 sec)

마무리: 생성된 쿼리 실행하기

출력된 ALTER TABLE 문을 그대로 복사해 실행하면 실제로 열 이름이 소문자로 변경됩니다. 문장이 많은 경우에는 결과를 파일로 저장한 후 일괄 실행하거나, 클라이언트 도구의 스크립트 실행 기능을 활용하면 편리합니다. 단, 운영 환경에서는 변경 전 반드시 데이터를 백업하고, 인덱스·외래 키·애플리케이션 코드에서 해당 열 이름을 참조하는 부분에 영향이 없는지 먼저 확인하는 것이 안전합니다.