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 변경할테이블명;
|
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 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}
|