테이블의 컬럼을 변경 외에도 컬럼의 데이터 타입 자료형도 변경이 가능합니다. 하지만 컬럼의 데이터 타입을 변경할 때는 주의할 사항이 많습니다.
데이터의 타입을 변경할 때는 변경하고자 하는 데이터의 타입이 자료를 유지할 수 있는 호 환적인 형태이어야 합니다. 만일 잘못된 자료형으로 변경하게 되면 기존 데이터에 문제가 발생합니다. 저장되어 있는 데이터가 삭제되거나 이상한 값으로 변경될 수도 있습니다.
| 쿼리 문법 |
ALTER TABLE 테이블명 MODIFY 컬럼명 자료형;
08.3.1 쿼리 실습
desc 쿼리 명령을 통하여 members 의 테이블의 구조를 확인합니다. members 테이블의 age 칼럼은 데이터 타입이 가변 문자열 10자리 varchar(10)으로 되어 있습니다.
| 콘솔 실습 화면 |
mysql> desc members;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| LastName | varchar(255) | YES | | NULL | |
| FirstName | varchar(255) | YES | | NULL | |
| Address | varchar(255) | YES | | NULL | |
| City | varchar(255) | YES | | NULL | |
| Country | varchar(255) | YES | | NULL | |
| age | varchar(10) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
7 rows in set (0.02 sec)
기존 age 컬럼의 데이터 타입을 정수형 타입 int(8) 형태로 변경해 보도록 하겠습니다.
| 예제 쿼리 |
alter table members modify age int(8);
| 콘솔 실습 화면 |
mysql> alter table members modify age int(8);
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
쿼리가 정상적으로 수행되었습니다. desc 쿼리 명령을 통하여 다시 한번 테이블의 구조 를 확인해 보도록 합니다.
| 콘솔 실습 화면 |
mysql> desc members;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| LastName | varchar(255) | YES | | NULL | |
| FirstName | varchar(255) | YES | | NULL | |
| Address | varchar(255) | YES | | NULL | |
| City | varchar(255) | YES | | NULL | |
| Country | varchar(255) | YES | | NULL | |
| age | int(8) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
7 rows in set (0.02 sec)
테이블의 구조를 확인해 보면 컬럼 age의 데이터 타입이 변경된 것을 확인할 수 있습니다.
08.3.2 PHP 실습
PHP 코드를 통하여 컬럼의 데이터 타입을 변경해 보도록 하겠습니다.
예제 파일 | alter-04.php
<?php
include "dbinfo.php";
include "mysql.class.php";
// ++ Mysqli DB 연결.
$db = new JinyMysql();
$tbname = "members";
$field = "birth";
$datatype = "varchar(20)";
// 필드를 추가합니다.
$db->tableFieldModify($tbname, $field, $datatype);
?>
화면 출력
mysql connected!
쿼리성공] ALTER TABLE members MODIFY birth varchar(20)
컬럼변경!