[MySQL] ALTER TABLE 구문 정리Database/MySQL2022. 11. 29. 13:55
Table of Contents
반응형
MySQL에서 사용하는 ALTER TABLE
구문에 대해 알아보겠습니다.
테이블 관련
테이블 생성
테이블 2개를 생성합니다.
CREATE TABLE test (
id INTEGER,
age INTEGER,
name VARCHAR(50),
jumin VARCAHR(15),
PRIMARY KEY(id),
UNIQUE(age),
INDEX(name),
KEY(jumin),
INDEX(name, jumin)
);
CREATE TABLE test2 (
id INTEGER,
parent_id INTEGER,
FOREIGN KEY (parent_id) REFERENCES test(id) ON DELETE CASCADE ON UIPDATE CASCADE
);
- INDEX를 KEY로 바꿔도 됩니다.
- INDEX(name, jumin) 과 INDEX(name), INDEX(jumin) 은 다릅니다.
테이블 속성 변경
[] 에 들어가 있는 내용은 생략 가능합니다.
필드 추가
ALTER TABLE 테이블명 ADD [COLUMN] 추가할필드명 필드타입 [FIRST | AFTER 필드명];
ALTER TABLE 테이블명 ADD [COLUMN] (추가할필드명 필드타입, ...);
필드명 및 타입 변경
ALTER TABLE 테이블명 CHANGE [COLUMN] 기존필드명 변경할필드명 변경할필드타입 [FIRST | AFTER 필드명];
필드 타입 변경
ALTER TABLE 테이블명 MODIFY [COLUMN] 기존필드명 변경할필드명 [FIRST | AFTER 필드명];
필드 삭제
ALTER TABLE 테이블명 DROP [COLUMN] 제거할필드명;
필드 디폴트 정의
ALTER TABLE 테이블명 ALTER [COLUMN] 필드명 {SET DEFAULT 'XXX' | DROP DEFAULT};
테이블명 변경
ALTER TABLE 테이블명 RENAME 변경할테이블명;
COMMENT 추가
ALTER TABLE 테이블명 COMMENT '내용';
ALTER TABLE 테이블명 MODIFY 필드명 필드타입 [DEFAULT 'XXX'] COMMENT '내용';
인덱스 관련
인덱스 생성
INDEX
CREATE INDEX 인덱스명 ON 테이블명 (필드1, 필드2, ...);
ALTER TABLE 테이블명 ADD INDEX [인덱스명] [인덱스타입] (필드1, 필드2, ...);
ALTER TABLE 테이블명 ADD KEY [인덱스명 ] [인덱스타입] (필드1, 필드2, ...);
UNIQUE
CREATE UNIQUE INDEX 인덱스명 ON 테이블명 (필드1, 필드2, ...);
ALTER TABLE 테이블명 ADD [CONSTRAINT [심볼]] UNIQUE [인덱스명] [인덱스타입] (필드1, 필드2, ...);
PRIMARY KEY
ALTER TABLE 테이블명 ADD [CONSTRAINT [심볼]] PRIMARY KEY [인덱스타입] (필드1, 필드2, ...);
FOREIGN KEY
외래키 생성 시 제약 조건과 INDEX 가 같이 생성되며, 외래키를 삭제하더라도 INDEX는 남게 됩니다. 만약 인덱스도 삭제가 필요하다면 같이 삭제해야 합니다.
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
CREATE FULLTEXT INDEX 인덱스명 ON 테이블명 (필드1, 필드2, ...);
ALTER TABLE 테이블명 ADD FULLTEXT [인덱스명 ] (필드1, 필드2, ...);
인덱스 보기
SHOW INDEX FROM 테이블명
인덱스 삭제
DROP INDEX 인덱스명 ON 테이블명;
ALTER TABLE 테이블명 DROP INDEX 인덱스명;
ALTER TABLE 테이블명 DROP INDEX PRIMARY KEY;
ALTER TABLE 테이블명 DROP INDEX FOREIGN KEY [fk_symbol];
기타
키 활성화
ALTER TABLE 테이블명 ENABLE KEYS;
ALTER TABLE 테이블명 DISABLE KEYS;
정렬
ALTER TABLE 테이블명 ORDER BY 필드명;
캐릭터 셋
ALTER TABLE 테이블명 CONVER TO CHARACTER SET 캐릭터셋
ALTER TABLE 테이블명 CHARACTER SET 캐릭터셋
데이터베이스 엔진 변경
ALTER TABLE 테이블명 ENGINE={InnoDB | MyISAM}
반응형
'Database > MySQL' 카테고리의 다른 글
[MySQL] 스토리지 엔진(Storage Engine) (0) | 2022.12.03 |
---|---|
[MySQL] 유용 명령어 (0) | 2022.12.03 |
[MySQL] 인덱스(INDEX) 정리 (0) | 2022.11.29 |
[MySQL] 계정 관리 (0) | 2022.11.27 |
[MySQL] 접속 에러 해결 방법 (0) | 2022.11.27 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!