Latest web development tutorials

MySQL의 ALTER 명령

우리는 데이터 테이블을 수정하거나 데이터 테이블의 필드를 수정해야하는 경우, 당신은 MySQL의 ALTER 명령을 사용해야합니다.

testalter_tbl :이 장 시작하기 전에 튜토리얼은 우리가 테이블, 테이블 이름을 만들 수 있습니다.

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> create table testalter_tbl
    -> (
    -> i INT,
    -> c CHAR(1)
    -> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i     | int(11) | YES  |     | NULL    |       |
| c     | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

삭제, 추가 또는 테이블의 필드를 수정

다음 명령은 ALTER 사용하고 DROP 절은 명령 표 필드 위에서 만든 삭제 :

mysql> ALTER TABLE testalter_tbl  DROP i;

테이블의 데이터가 하나의 필드에 남아있는 경우에 당신은 필드를 삭제하려면 DROP을 사용할 수 없습니다.

MySQL은 테이블에있는 필드의 예 내가 testalter_tbl 및 데이터 유형을 정의 추가로 열, 데이터 시트를 원하는 추가하려면 ADD 절을 사용 :

mysql> ALTER TABLE testalter_tbl ADD i INT;

상기 명령을 실행 한 후에, 필드는 자동적으로 데이터 테이블 필드의 끝에 추가된다.

mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

당신은 (필드에있는 설정을 한 후) 새 필드의 위치를 ​​지정해야하는 경우에는 MySQL이 필드 이름 뒤에 키워드 FIRST (첫 번째 열의 세트 비트)를 제공 할 수 있습니다.

성공적인 구현 한 후, 사용 SHOW 열이 변경 테이블 구조를 보려면, 다음 ALTER TABLE 문을보십시오 :

ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;

FIRST 만 ADD 절에 대한 키워드 AFTER, 그래서 당신이 필드를 추가하고 위치를 설정 ADD DROP이 필드를 삭제 사용하고 사용의 필요성에 데이터 테이블 필드의 위치를 ​​재설정하려는 경우.


필드 이름을 수정하고 입력

이 필드 유형과 이름을 수정해야하는 경우 변경을 사용하거나 ALTER 명령의 조항을 수정할 수 있습니다.

예를 들어, CHAR에서 유형 필드 C (1) (10) CHAR하려면 다음 명령을 실행할 수 있습니다 :

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

사용 CHANGE 절 문법은 매우 다르다. 변경 키워드 후 수정 한 다음 새 필드 이름과 유형을 지정할 필드 이름 하였다. 다음 예를보십시오 :

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

널 및 기본 값에 대한 ALTER TABLE의 효과

이 필드를 수정할 때 포함 여부 만 기본값을 설정할지 여부를 지정할 수 있습니다.

다음의 예는, 지정된 필드 j는 NULL NOT이며, 기본값은 100입니다.

mysql> ALTER TABLE testalter_tbl 
    -> MODIFY j BIGINT NOT NULL DEFAULT 100;

당신이 디폴트 값을 설정하지 않으면, MySQL은 자동으로 NULL로 필드의 기본값을 설정합니다.


기본 필드 값을 수정

당신은 ALTER 필드의 기본값을 수정하여 사용할 수 있으며,하기의 실시 예를보십시오

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | 1000    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

또한 예로서, 필드를 삭제하는 기본 명령 ALTER 및 DROP 절을 사용할 수 있습니다 :

mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Changing a Table Type:

데이터 테이블 유형을 수정 ALTER 명령과 TYPE 절을 사용하여 수행 할 수 있습니다. 우리는 테이블 testalter_tbl의 MYISAM의 유형을 수정합니다, 다음 예를보십시오 :

참고 : 데이터 테이블 유형은 테이블 표시 상태 문을 사용할 수 있습니다 참조하십시오.

mysql> ALTER TABLE testalter_tbl TYPE = MYISAM;
mysql>  SHOW TABLE STATUS LIKE 'testalter_tbl'\G
*************************** 1. row ****************
           Name: testalter_tbl
           Type: MyISAM
     Row_format: Fixed
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 25769803775
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2007-06-03 08:04:36
    Update_time: 2007-06-03 08:04:36
     Check_time: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

테이블 이름을 수정

당신은 데이터 테이블의 이름을 수정해야하는 경우, 당신은 달성하기 위해 ALTER TABLE 문에서 RENAME 절을 사용할 수 있습니다.

alter_tbl의 이름을 변경 testalter_tbl 데이터 테이블의 다음 예를보십시오 :

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

ALTER 명령은 또한, 우리는 다음 장에서 소개합니다이 기능을 작성하고 인덱스를 MySQL의 데이터 테이블을 삭제하는 데 사용할 수 있습니다.