MySQL에서 ALTER TABLE로 열 크기 변경하기
MySQL에서 이미 생성된 테이블의 열(컬럼) 크기를 변경하려면 ALTER TABLE 문과 MODIFY 절을 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.
ALTER TABLE 테이블명 MODIFY 열명 데이터타입(크기);
예제: Student 테이블
'Student'라는 테이블을 예로 들어 살펴보겠습니다. 먼저 DESCRIBE 명령으로 현재 테이블 구조를 확인합니다.
mysql> DESCRIBE Student; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | Name | varchar(20) | YES | | NULL | | | RollNo | int(11) | YES | | NULL | | | Grade | varchar(10) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.06 sec)
위 결과 집합을 보면 'Name' 필드의 크기가 varchar(20), 즉 최대 20자로 선언되어 있는 것을 알 수 있습니다.
열 크기 늘리기
이제 'Name' 열의 크기를 20에서 50으로 늘리고 싶다고 가정해 보겠습니다. 다음 쿼리를 실행하면 됩니다.
mysql> ALTER TABLE Student MODIFY column Name Varchar(50); Query OK, 3 rows affected (0.85 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> DESCRIBE Student; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | Name | varchar(50) | YES | | NULL | | | RollNo | int(11) | YES | | NULL | | | Grade | varchar(10) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.06 sec)
결과 집합에서 확인할 수 있듯이 'Name' 열의 크기가 varchar(20)에서 varchar(50)으로 성공적으로 변경되었습니다. 기존에 저장된 데이터는 그대로 유지됩니다.
주의 사항
- 열 크기를 줄일 때는 주의가 필요합니다. 기존 데이터가 새로 지정한 크기보다 길면 strict 모드에서는 오류가 발생하고, 그렇지 않으면 데이터가 잘릴 수 있습니다.
- MODIFY 절은 열 이름을 그대로 유지하면서 데이터 타입과 크기만 변경합니다. 만약 열 이름까지 함께 바꾸고 싶다면 CHANGE 절을 사용하면 됩니다.
- MySQL 8.0부터는 int(11)처럼 괄호 안의 표시 폭(display width)이 더 이상 사용되지 않으므로, 정수형은 단순히 INT로 선언하는 것이 권장됩니다.