테이블의 컬럼을 삭제할 수 있습니다. 컬럼을 삭제할 때는 매우 조심스러운 주의가 필요 합니다. 컬럼을 삭제하게 되면 컬럼 안에 있는 데이터 모두 삭제됩니다. 또한 삭제된 컬럼 의 자료는 복구되지 않습니다.
컬럼을 삭제할 때는 DROP 키워드를 함께 사용합니다.
| 쿼리 문법 |
ALTER TABLE 테이블명 DROP 컬럼명;
08.5.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 | |
| 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)
테이블의 컬럼 regdate를 삭제합니다 .
alter table members drop regdate;
| 콘솔 실습 화면 |
mysql> alter table members drop regdate;
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 | |
| Address | varchar(255) | YES | | NULL | |
| City | varchar(255) | YES | | NULL | |
| Country | varchar(255) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
7 rows in set (0.02 sec)
테이블의 regdate 컬럼이 삭제된 것을 확인할 수 있습니다.
08.5.2 PHP 실습
PHP 코드를 통하여 테이블의 컬럼을 삭제해 봅니다. 관련 메서드를 하나 더 추가하여 실 습해 보겠습니다.
| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.
// 테이블 컬럼필드를 삭제합니다.
public function tableFieldDrop($tbname,$field)
{
if ($tbname) {
$queryString = "ALTER TABLE $tbname DROP $field";
// 쿼리를 전송합니다.
if (mysqli_query($this->dbcon, $queryString)=== TRUE) {
$this->msgEcho("쿼리성공] ".$queryString);
$this->msgEcho(" 컬럼삭제!");
// 객체 반환, 매서드체인
return $this;
} else {
$this->msgEcho("Error] ".$queryString);
}
} else {
$this->msgEcho("Error] 테이블 이름이 없습니다.");
}
}
예제 파일 | alter-06.php
<?php
include "dbinfo.php";
include "mysql.class.php";
// ++ Mysqli DB 연결.
$db = new JinyMysql();
$tbname = "members";
$field = "regdate";
// 필드를 삭제합니다.
$db->tableFieldDrop($tbname, $field);
?>
화면 출력
mysql connected!
쿼리성공] ALTER TABLE members DROP regdate
컬럼삭제!