ADD COLUMN 절

설명

ADD COLUMN 절을 사용하여 새로운 컬럼을 추가할 수 있다. FIRST 또는 AFTER 키워드를 사용하여 새로 추가할 컬럼의 위치를 지정할 수 있다.

새로 추가되는 컬럼이 NOT NULL 제약 조건이 있으나 DEFAULT 제약 조건이 없는 경우, 데이터베이스 서버 설정 파라미터인 add_column_update_hard_default가 yes이면 고정 기본값(hard default)을 갖게 되고, no이면 NOT NULL 제약 조건이 있어도 NULL 값을 갖게 된다. 새로 추가되는 컬럼에 PRIMARY KEY 혹은 UNIQUE 제약 조건을 지정하는 경우에 데이터베이스 서버 설정 파라미터인 add_column_update_hard_default 값이 yes이면 에러를 반환하고, no이면 모든 데이터는 NULL 값을 갖게 된다. add_column_update_hard_default의 기본값은 no이다.

add_column_update_hard_default 및 고정 기본값에 대해서는 CHANGE, MODIFY 절을 참고한다.

구문

ALTER [ TABLE | CLASS | VCLASS | VIEW ] table_name

ADD [ COLUMN | ATTRIBUTE ] [(]<column_definition>[)] [ FIRST | AFTER old_column_name ]

 

column_definition ::=

column_name column_type

    { [ NOT NULL | NULL ] |

      [ { SHARED <value_specification> | DEFAULT <value_specification> }

          | AUTO_INCREMENT [(seed, increment)] ] |

      [ UNIQUE [ KEY ] |

          [ PRIMARY KEY | FOREIGN KEY REFERENCES

              [ referenced_table_name ]( column_name_comma_list )

              [ <referential_triggered_action> ... ]

          ]

      ] } ...

 

<referential_triggered_action> ::=

{ ON UPDATE <referential_action> } |

{ ON DELETE <referential_action> } |

{ ON CACHE OBJECT cache_object_column_name }

 

<referential_action> ::=

CASCADE | RESTRICT | NO ACTION | SET NULL

예제

CREATE TABLE a_tbl;

ALTER TABLE a_tbl ADD COLUMN age INT DEFAULT 0 NOT NULL;

INSERT INTO a_tbl(age) VALUES(20),(30),(40);

ALTER TABLE a_tbl ADD COLUMN name VARCHAR FIRST;

ALTER TABLE a_tbl ADD COLUMN id INT NOT NULL AUTO_INCREMENT UNIQUE;

ALTER TABLE a_tbl ADD COLUMN phone VARCHAR(13) DEFAULT '000-0000-0000' AFTER name;

 

SELECT * FROM a_tbl;

 

  name                  phone                         age           id

======================================================================

  NULL                  '000-0000-0000'                20         NULL

  NULL                  '000-0000-0000'                30         NULL

  NULL                  '000-0000-0000'                40         NULL

 

--adding multiple columns

ALTER TABLE a_tbl ADD COLUMN (age1 int, age2 int, age3 int);