2020-11-26 09:08:05

MySQL, MariaDB의 경우 테이블의 컬럼을 수정하는 것이 가능한데, sqlite의 경우에는 불가능합니다. 여기서 컬럼 수정이 가능하다는 것은 데이터 타입, 디폴트 값, 제약조건 등의 수정이 가능하다는 뜻입니다. sqlite의 경우 컬럼 수정이 불가하기 때문에 처음에 테이블을 만들때, 또는 컬럼을 추가할 때 잘 설정해줘야 합니다. 

 

예를 들어보겠습니다. student라는 이름의 테이블에 cnt라는 이름의 컬럼이 존재하는 상황입니다. 현재 cnt 컬럼의 디폴트 값은 0입니다.  

 

 

이 디폴트 값을 1로 바꾸는 것이 가능한지 한번 테스트해보겠습니다. 

 

sqlite> ALTER TABLE student MODIFY cnt INT default 1;

 

 

보시다시피 안 되고, 에러 메시지를 출력합니다.

 

하지만, MySQL이나 MariaDB에서는 가능합니다. 다음과 같이 level이라는 이름의 컬럼 디폴트 값이 0으로 설정되어 있는 상황을 가정하겠습니다. 

 

 

이 상황에서 level 컬럼의 디폴트 값을 10으로 변경해보겠습니다. 

 

MariaDB [test]> ALTER TABLE user MODIFY level INT DEFAULT 10;

 

 

그럼 테이블이 어떻게 변했는지 한번 확인해보겠습니다. 

 

 

"엇! 아무 변화가 없네?" 하실 수도 있는데, 이래야 정상이고 참으로 다행인 것입니다. 디폴트 값을 바꿨다고 테이블에 저장되어 있던 기존의 값들을 바꿔버린다면 큰일 나겠지요.ㅎㅎ 디폴트 값의 정의를 생각해볼 필요가 있습니다. 디폴트 값이라는 것은 아무 값도 입력하지 않았을 때 주는 값입니다. 따라서, 새로운 행을 추가할 때 level 컬럼에 값을 주지 않으면 그 자리에 10이 들어갑니다. 다음과 같이 말이죠. 

 

 

게임회사에서 이벤트로 어떤 기간에 회원가입을 하면 신규유저들에게 레벨 10을 주고 시작하겠다고 한다면, 이런 방식과 유사한 것을 써야하겠죠?  

 

bskyvision의 추천글

[MariaDB] 컬럼 타입 변경하기