생성된 테이블에 새로운 컬럼을 추가할 수 있습니다. 컬럼을 추가할 때는 기존의 컬럼명 과 중복되지 않도록 이름을 잘 정의해야 합니다. 컬럼명이 중복이 되면 쿼리 명령은 실행 오류를 발생합니다.

테이블에 컬럼을 추가할 때는 ADD 키워드를 추가합니다.

| 쿼리 문법 |

ALTER TABLE 테이블명 ADD 컬럼 이름 자료형; 

08.1.1 쿼리 실습

새로운 컬럼을 하나 추가해 봅니다. 먼저 desc 쿼리 명령을 통하여 기존 members 테이블의 구조를 확인합니다.

| 콘솔 실습 화면 |

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    |                |
+-----------+--------------+------+-----+---------+----------------+
6 rows in set (0.02 sec)

기존 members 테이블에 나이를 저장할 새로운 컬럼 age를 추가해 보도록 하겠습니다. 데이터 타입은 가변 문자열 10자리 varchar(10)으로 설정합니다.

| 예제 쿼리 |

alter table members add age varchar(10); 

| 콘솔 실습 화면 |

mysql> alter table members add age varchar(10);
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       | varchar(10)  | YES  |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
7 rows in set (0.02 sec)

위의 결과를 보면 새로운 컬럼 age가 마지막에 추가된 것을 확인할 수 있습니다.

08.1.2 PHP 실습

PHP 코드를 통하여 테이블에 새로운 컬럼을 추가해 보도록 하겠습니다.

| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.

// 컬럼 데이터 타입을 수정합니다.
public function tableFieldADD($tbname, $field, $datatype, $pos)
{
            if ($tbname) {
                $queryString = "ALTER TABLE $tbname ADD $field $datatype";
                if ($pos) {
                    if($pos == "first") $queryString .= " first"; 
                    else $queryString .= " after $pos";
                }

                // 쿼리를 전송합니다.
                if (mysqli_query($this->dbcon, $queryString)=== TRUE) {
                    $this->msgEcho("쿼리성공] ".$queryString);
                    $this->msgEcho(" 컬럼추가!");

                    // 객체 반환, 매서드체인
                    return $this; 

                } else {
                    $this->msgEcho("Error] ".$queryString);
                }

            } else {
               $this->msgEcho("Error] 테이블 이름이 없습니다."); 
            }    
}

예제 파일 | alter-01.php

<?php
 
	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();
 
	$tbname = "members";
	$field = "address2";
	$datatype = "varchar(255)";
    
	// 필드를 추가합니다.
	$db->tableFieldADD($tbname, $field, $datatype);
 
?>

화면 출력

mysql connected!
쿼리성공] ALTER TABLE members ADD address2 varchar(255)
컬럼추가!