[MySQL] ALTER TABLE 구문 정리

MySQL에서 사용하는 ALTER TABLE 구문에 대해 알아보겠습니다.

테이블 관련

테이블 생성

테이블 2개를 생성합니다.

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE test (
id INT NOT NULL AUTO_INCREMENT,
age INT,
name VARCHAR(50),
jumin VARCAHR(15),
PRIMARY KEY(id),
UNIQUE(age),
INDEX(name),
KEY(jumin),
INDEX(name, jumin)
);
1
2
3
4
5
CREATE TABLE test2 (
id INT,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES test(id) ON DELETE CASCADE ON UIPDATE CASCADE
);
  • INDEX를 KEY로 바꿔도 됩니다.
  • INDEX(name, jumin) 과 INDEX(name), INDEX(jumin) 은 다릅니다.

테이블 속성 변경

[] 에 들어가 있는 내용은 생략 가능합니다.

1. 필드 추가

1
2
ALTER TABLE 테이블명 ADD [COLUMN] 추가할필드명 필드타입 [FIRST | AFTER 필드명];
ALTER TABLE 테이블명 ADD [COLUMN] (추가할필드명 필드타입, ...);

2. 필드명 및 타입 변경

1
ALTER TABLE 테이블명 CHANGE [COLUMN] 기존필드명 변경할필드명 변경할필드타입 [FIRST | AFTER 필드명];

3. 필드 타입 변경

1
ALTER TABLE 테이블명 MODIFY [COLUMN] 기존필드명 변경할필드명 [FIRST | AFTER 필드명];

4. 필드 삭제

1
ALTER TABLE 테이블명 DROP [COLUMN] 제거할필드명;

5. 필드 디폴트 정의

1
ALTER TABLE 테이블명 ALTER [COLUMN] 필드명 {SET DEFAULT 'XXX' | DROP DEFAULT};

6. 테이블명 변경

1
ALTER TABLE 테이블명 RENAME 변경할테이블명;

7. COMMENT 추가

1
2
ALTER TABLE 테이블명 COMMENT '내용';
ALTER TABLE 테이블명 MODIFY 필드명 필드타입 [DEFAULT 'XXX'] COMMENT '내용';

인덱스 관련

인덱스 생성

INDEX

1
2
3
CREATE INDEX 인덱스명 ON 테이블명 (필드1, 필드2, ...);
ALTER TABLE 테이블명 ADD INDEX [인덱스명] [인덱스타입] (필드1, 필드2, ...);
ALTER TABLE 테이블명 ADD KEY [인덱스명 ] [인덱스타입] (필드1, 필드2, ...);

UNIQUE

1
2
CREATE UNIQUE INDEX 인덱스명 ON 테이블명 (필드1, 필드2, ...);
ALTER TABLE 테이블명 ADD [CONSTRAINT [심볼]] UNIQUE [인덱스명] [인덱스타입] (필드1, 필드2, ...);

PRIMARY KEY

1
ALTER TABLE 테이블명 ADD [CONSTRAINT [심볼]] PRIMARY KEY [인덱스타입] (필드1, 필드2, ...);

FOREIGN KEY

외래키 생성 시 제약 조건과 INDEX 가 같이 생성되며, 외래키를 삭제하더라도 INDEX는 남게 됩니다. 만약 인덱스도 삭제가 필요하다면 같이 삭제해야 합니다.

1
2
3
ALTER TABLE 테이블명 ADD [CONSTRAINT [심볼]] FOREIGN KEY [인덱스명] (필드1, 필드2, ...) [레퍼런스조건]
ON UPDATE [RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT]
ON DELETE [RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT];

FULLTEXT

1
2
CREATE FULLTEXT INDEX 인덱스명 ON 테이블명 (필드1, 필드2, ...);
ALTER TABLE 테이블명 ADD FULLTEXT [인덱스명 ] (필드1, 필드2, ...);

인덱스 보기

1
SHOW INDEX FROM 테이블명

인덱스 삭제

1
2
3
4
DROP INDEX 인덱스명 ON 테이블명;
ALTER TABLE 테이블명 DROP INDEX 인덱스명;
ALTER TABLE 테이블명 DROP INDEX PRIMARY KEY;
ALTER TABLE 테이블명 DROP INDEX FOREIGN KEY [fk_symbol];

기타

키 활성화

1
2
ALTER TABLE 테이블명 ENABLE KEYS;
ALTER TABLE 테이블명 DISABLE KEYS;

정렬

1
ALTER TABLE 테이블명 ORDER BY 필드명;

캐릭터 셋

1
2
ALTER TABLE 테이블명 CONVER TO CHARACTER SET 캐릭터셋
ALTER TABLE 테이블명 CHARACTER SET 캐릭터셋

데이터베이스 엔진 변경

1
ALTER TABLE 테이블명 ENGINE={InnoDB | MyISAM}
Share