mysql 컬럼 추가 / 변경 삭제 쿼리 정리 (ALTER TABLE)

안녕하세요.

 

개발하다가 너무 datagrip의 인터페이스로 제공되는 ddl을 많이 사용하는 것 같아서

 

개인적으로 스키마를 sql only로 처리하려고 노력하고 있는데..(누군가는 필요없다고 생각할 수 있지만 개인적인 챌린지입니다!)

 

mysql보단 postgresql을 많이 사용했다보니 개인 프로젝트 할 때 mysql의 테이블을 수정하거나 컬럼을 수정할 때 자주 찾아보게되는 것보다 제 블로그에 정리해놓는 것이 더 좋을 것 같아서 이를 정리하고자 합니다.

 

먼저 예제로 사용할 테이블을 만들어 보겠습니다.

 

테이블 생성
create table room(
    seq bigint primary key,
    type varchar(100),
    status varchar(100)
);

단순한 구조의 예제 테이블을 생성했습니다.

 


 

컬럼 추가(컬럼 위치)
ALTER TABLE 테이블 ADD 컬럼명 타입 DEFAULT 디폴트값;
ALTER TABLE 테이블 ADD COLUMN 컬럼명 타입 DEFAULT 디폴트값 컬럼위치;

Postgresql과는 다르게 컬럼 위치를 정할 수 있었다. postgresql에서는 새로운 테이블을 만들어서 마이그레이션하는 방법밖에는 생각이 안났는데 개발하면서 스키마가 자주 바뀔 수 있는 상황에서 좀더 스키마의 자연스러운 형태를 유지할 수 있을 것 같다.

 

근데 맨앞에만 넣을 수 있는건가..? 이에 대한 자연스러운 해답은 컬럼 위치 변경에서 확인할 수 있을 것 같다.

 

ex ) 

ALTER TABLE room ADD address varchar(200);
ALTER TABLE room ADD address varchar(200) DEFAULT '매물주소';
ALTER TABLE room ADD COLUMN  address varchar(200) DEFAULT '매물주소' FIRST;

 

 

컬럼명, 컬럼 타입 변경
ALTER TABLE 테이블 CHANGE 기존컬럼명 변경할컬럼명 타입;

 

 

변경함에 있어서 change라는 키워드를 사용한다.

 

ex) 아래처럼 address 를 text 타입으로 변경하니 타입 또한 변경할 수 있다.

ALTER TABLE room CHANGE address address_fix text;

 

컬럼 default 값 변경

 

ALTER TABLE 테이블 MODIFY 컬럼명 컬럼의기존타입 DEFAULT 디폴트값;

ex ) default 값을 변경한다.

ALTER TABLE room MODIFY address varchar(200) default '디폴트';

 

컬럼 주석 추가
ALTER TABLE room MODIFY address varchar(200) DEFAULT '디폴트를 유지시켜야한다.' comment '주소 컬럼에 코멘트를 추가한다.';

컬럼에 주석을 추가할 경우에는 조금 불편하지만 기존 속성을 모두 추가해주어야 하는 것 같다. 이건 조금 불편하다.. datagrip 자동 ddl에서 확인해도 기존의 속성을 물고 해당 ddl이 실행되는 걸 보니 mysql dbms의 한계가 아닌가 싶다. 

 

컬럼 위치 변경
ALTER TABLE 테이블 MODIFY COLUMN 컬럼명 타입 AFTER 다른컬럼;

ex) address라는 컬럼을 seq바로 뒤에 위치시키고 싶다면 위와 같이 처리하면 된다.

ALTER TABLE room MODIFY COLUMN address varchar(200) AFTER seq;

 

 

컬럼 삭제
ALTER TABLE 테이블 DROP COLUMN 삭제할컬럼명;

ex) address 라는 컬럼을 삭제한다.

ALTER TABLE room DROP COLUMN address;

'Database' 카테고리의 다른 글

랜덤 엑세스란 무엇인가?  (0) 2022.07.03

댓글

Designed by JB FACTORY