생성된 테이블의 컬럼 이름을 변경할 수 있습니다. 컬럼의 이름은 데이터베이스에서 쉽게 변경할 수 있습니다. 하지만 데이터베이스와 연결된 응용프로그램에서는 데이터에 접근 할 때 컬럼명을 많이 사용합니다. 컬럼명 변경과 프로그램 코드를 잘 반영하여 적절하게 수정하는 것이 중요합니다.
컬럼명을 변경할 때는 CHANGE 키워드를 사용합니다.
| 쿼리 문법 |
ALTER TABLE 테이블명 CHANGE 변경 전_컬럼명 변경 후_컬럼명 자료형;
CHANGE는 컬럼명 변경과 함께 자료형도 같이 변경할 수 있습니다.
08.4.1 쿼리 실습
기존 테이블의 컬럼명을 변경하는 실습을 하겠습니다. desc 쿼리 명령을 통하여 기존 테 이블의 구조를 확인합니다.
| 콘솔 실습 화면 |
mysql> desc members;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| age | varchar(10) | YES | | NULL | |
| Id | int(11) | NO | PRI | NULL | auto_increment |
| LastName | varchar(255) | YES | | NULL | |
| FirstName | varchar(255) | YES | | NULL | |
| birth | datetime | YES | | NULL | |
| Address | varchar(255) | YES | | NULL | |
| City | varchar(255) | YES | | NULL | |
| Country | varchar(255) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
8 rows in set (0.02 sec)
기존 birth 컬럼명을 새로운 컬럼명 regdate로 이름을 변경해 보겠습니다. 또한 자료형도 datetime에서 timestamp 타입으로 함께 변경하겠습니다.
| 예제 쿼리 |
alter table members change birth regdate timestamp;
| 콘솔 실습 화면 |
mysql> alter table members change birth regdate timestamp;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
쿼리 명령이 잘 실행되었습니다. desc 쿼리 명령을 통하여 다시 한번 테이블의 구조를 확인해 봅니다.
| 콘솔 실습 화면 |
mysql> desc members;
+-----------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+-------------------+-----------------------------+
| age | varchar(10) | YES | | NULL | |
| Id | int(11) | NO | PRI | NULL | auto_increment |
| LastName | varchar(255) | YES | | NULL | |
| FirstName | varchar(255) | YES | | NULL | |
| regdate | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| Address | varchar(255) | YES | | NULL | |
| City | varchar(255) | YES | | NULL | |
| Country | varchar(255) | YES | | NULL | |
+-----------+--------------+------+-----+-------------------+-----------------------------+
8 rows in set (0.01 sec)
08.4.2 PHP 실습
컬럼명 변경을 PHP 코드로 실습해 보도록 합니다. 새로운 메서드를 추가하여 실습 코드 를 작성합니다.
| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.
// 테이블 컬럼필드를 수정합니다.
public function tableFieldChange($tbname, $src, $dst, $datatype)
{
if ($tbname){
$queryString = "ALTER TABLE $tbname CHANGE $src $dst $datatype";
// 쿼리를 전송합니다.
if (mysqli_query($this->dbcon, $queryString)=== TRUE){
$this->msgEcho("쿼리성공] ".$queryString);
$this->msgEcho(" 컬럼명 변경");
// 객체 반환, 매서드체인
return $this;
} else {
$this->msgEcho("Error] ".$queryString);
}
} else {
$this->msgEcho("Error] 테이블 이름이 없습니다.");
}
}
예제 파일 | alter-05.php
<?php
include "dbinfo.php";
include "mysql.class.php";
// ++ Mysqli DB 연결.
$db = new JinyMysql();
$tbname = "members";
$src = "birth";
$dst = "regdate";
$datatype = "varchar(20)";
// 필드를 추가합니다.
$db->tableFieldChange($tbname, $src, $dst, $datatype);
?>
화면 출력
mysql connected!
쿼리성공] ALTER TABLE members CHANGE birth regdate varchar(20)
컬럼명 변경!