테이블의 컬럼을 변경 외에도 컬럼의 데이터 타입 자료형도 변경이 가능합니다. 하지만 컬럼의 데이터 타입을 변경할 때는 주의할 사항이 많습니다.

데이터의 타입을 변경할 때는 변경하고자 하는 데이터의 타입이 자료를 유지할 수 있는 호 환적인 형태이어야 합니다. 만일 잘못된 자료형으로 변경하게 되면 기존 데이터에 문제가 발생합니다. 저장되어 있는 데이터가 삭제되거나 이상한 값으로 변경될 수도 있습니다.

| 쿼리 문법 |

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)
컬럼변경!