728x90
반응형
MariaDB의 컬럼추가 및 변경 시 FIRST와 AFTER 옵션으로 컬럼순서를 지정하는 방법을 알아본다.
1. FIRST, AFTER 옵션
2. 컬럼추가 (ADD)
3. 컬럼변경 (MODIFY)
4. 컬럼변경 (CHANGE)
5. 예시

 

 

 


MySQL, MariaDB에서는 FIRST와 AFTER 옵션으로 테이블 내 컬럼의 순서를 지정하는 것이 가능한데

컬럼의 순서를 제일 앞으로 지정할 때는 FIRST 옵션, 특정컬럼의 뒤로 순서를 지정할 때는 AFTER 옵션을 사용한다.

 

 


ALTER TABLE [테이블명] ADD COLUMN [추가할컬럼명] [컬럼타입] FIRST
ALTER TABLE [테이블명] ADD COLUMN [추가할컬럼명] [컬럼타입] AFTER [컬럼위치]

일반적으로 순서지정 없이 컬럼을 추가하는(ADD) 경우 제일 마지막 순서로 컬럼이 새로 추가되지만,

FIRST나 AFTER 옵션을 이용하면 컬럼추가 시 원하는 위치를 지정할 수 있다.

 

 


ALTER TABLE [테이블명] MODIFY [순서변경 할 컬럼명] [컬럼타입] FIRST
ALTER TABLE [테이블명] MODIFY [순서변경 할 컬럼명] [컬럼타입] AFTER [컬럼위치]

이미 테이블 내 존재하는 컬럼의 순서만 변경할경우, MODIFY FIRST, AFTER 옵션을 이용하여 컬럼의 순서를 변경할 수 있다.

 

 


ALTER TABLE [테이블명] CHANGE [변경 전 컬럼명] [변경 후 컬럼명] [컬럼타입] FIRST
ALTER TABLE [테이블명] CHANGE [변경 전 컬럼명] [변경 후 컬럼명] [컬럼타입] AFTER [컬럼위치]

이미 테이블 내 존재하는 컬럼의 순서를 변경하는 점에서는 MODIFY와 비슷하지만 CHANGE의 경우 컬럼명까지 변경하는 차이점이 있다. 따라서 MODIFY가 아닌 CHANGE를 사용하여 컬럼명 변경없이 컬럼의 순서만 변경할 시에는 변경 전과 변경 후 컬럼명이 일치해야 한다.

 

 


아래는 FIRST와 AFTER를 사용하여 컬럼추가와 컬럼순서 변경을 하는 예시이다.

예시를 위해 「MSG_NO, MSG_TITLE, MSG_USE_YN 이렇게 3개의 컬럼이 존재하는 테이블을 생성하였다.

※ 컬럼추가 (ADD AFTER)

ADD AFTER 옵션을 이용해 MSG_OUTLINE컬럼을 MSG_TITLE컬럼뒤에 추가한다.

ALTER TABLE msg_t ADD COLUMN MSG_OUTLINE varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '메세지 개요' AFTER MSG_TITLE;

ADD AFTER

 

※ 컬럼추가 (ADD FIRST)

ADD FIRST 옵션을 이용해 「MSG_CTGRY컬럼을 테이블의 첫번째 컬럼으로 추가한다.

ALTER TABLE msg_t ADD COLUMN MSG_CTGRY varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '메세지 카테고리' FIRST;

ADD FIRST

 

※ 컬럼순서 변경 (MODIFY FIRST)

MODIFY FIRST 옵션을 이용해 MSG_NO컬럼의 순서를 첫번째로 변경한다.

ALTER TABLE msg_t MODIFY MSG_NO int(4) auto_increment NOT NULL COMMENT '메세지 No' FIRST;

MODIFY FIRST

 

※ 컬럼순서 변경 (MODIFY AFTER)

MODIFY AFTER 옵션을 이용해 MSG_CTGRY컬럼의 순서를 MSG_USE_YN컬럼 뒤로 변경한다.

ALTER TABLE msg_t MODIFY MSG_CTGRY varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '메세지 카테고리' AFTER MSG_USE_YN;

MODIFY AFTER

 

※ 컬럼순서 변경 (CHANGE FIRST)

CHANGE FIRST 옵션을 이용해 MSG_TITLE컬럼의 순서를 첫번째로 변경한다.

아울러 컬럼명도 MSG_TITLE」⇒MSG_MAIN_TITLE으로 변경한다.

ALTER TABLE msg_t CHANGE MSG_TITLE MSG_MAIN_TITLE varchar(150) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '메세지 메인제목' FIRST;

CHANGE FIRST

※ 컬럼순서 변경 (CHANGE AFTER)

CHANGE AFTER 옵션을 이용해 MSG_MAIN_TITLE컬럼의 순서를 MSG_NO」컬럼 뒤로 변경한다.

컬럼명은 변경하지 않을 것이기 때문에 변경 전 컬럼명과 변경후 컬럼명을 같은 이름으로 지정한다.

ALTER TABLE msg_t CHANGE MSG_MAIN_TITLE MSG_MAIN_TITLE varchar(150) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '메세지 제목' AFTER MSG_NO;

CHANGE AFTER

 

참조
MYSQL:change column order
https://thispointer.com/mysql-change-column-order/

글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --

 

728x90
반응형

'DB > MariaDB' 카테고리의 다른 글

[MariaDB] Error: 1146-42S02: Table doesn't exist  (0) 2023.09.11