기계는 거짓말하지 않는다

MySQL ALTER TABLE 본문

DB/MySQL

MySQL ALTER TABLE

KillinTime 2020. 12. 6. 21:32

MySQL 8.0 이상 ALTER TABLE

 

Table Column 변경

ALTER TABLE table_name MODIFY COLUMN column_name column_definition;	# 컬럼 변경
= ALTER TABLE table_name MODIFY column_name column_definition;

ALTER TABLE table_name MODIFY COLUMN column_name column_definition FIRST;
# 컬럼 변경 + 위치 첫번째

ALTER TABLE table_name MODIFY COLUMN column_name column_definition AFTER other_column_name;
# 컬럼 변경 + 위치 other_column_name 뒤

# ex) ALTER TABLE mytable MODIFY COLUMN id varchar(10) not null;

index 가 정의된 컬럼을 변경하면 같은 index 가 중복되서 만들어질 수 있으므로 주의.

Duplicate index message 를 볼 수 있다.

 

Table Column 추가

ALTER TABLE table_name ADD COLUMN column_name column_definition;	# 컬럼 추가
= ALTER TABLE table_name ADD column_name column_definition;

ALTER TABLE table_name ADD COLUMN column_name column_definition FIRST;
# 컬럼 추가 + 위치 첫번째

ALTER TABLE table_name ADD COLUMN column_name column_definition AFTER other_column_name;
# 컬럼 추가 + 위치 other_column_name 뒤

# ex) ALTER TABLE mytable ADD COLUMN id varchar(10) not null;

 

Table Column 이름 변경

ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;	# 컬럼명 변경

# ex) ALTER TABLE mytable RENAME COLUMN mynumber TO mynumber2;

"rename" is not valid at this position 이라는 오류 구문을 볼 수도 있지만 정상 동작한다. (v8.0.17)

2019-09-09 이후 release 버전에서 해결된 것 같다.

 

Table Column 이름, 정의 변경

ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name column_definition;	# 컬럼명, 정의 변경
= ALTER TABLE table_name CHANGE old_column_name new_column_name column_definition;

ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name column_definition FIRST;
# 컬럼명, 정의 변경 + 위치 첫번째

ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name column_definition AFTER other_column_name;
# 컬럼명, 정의 변경 + 위치 other_column_name 뒤

# ex) ALTER TABLE mytable CHANGE mynumber mynumber2 int;

 

Table Column 제거

ALTER TABLE table_name DROP COLUMN column_name;	# 컬럼 제거
= ALTER TABLE table_name DROP column_name;

ALTER TABLE table_name DROP COLUMN column_name_1, DROP COLUMN column_name_2;
# 컬럼 column_name_1, column_name_2 동시 제거

# ex) ALTER TABLE mytable DROP COLUMN id;

 

Table Comment 추가, 변경, 확인

ALTER TABLE table_name COMMENT = 'add comment';	# 테이블 주석 추가, 변경
ALTER TABLE table_name COMMENT = '';	# 테이블 주석 제거

SELECT table_comment
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'database_schema'
AND table_name = 'table_name';
# 테이블 주석 확인

 

Comments