2020-10-27 23:29:34

우선 컬럼의 타입 변경이 필요한 상황을 만들어보겠습니다. 저는 아직 어떤 테이블도 존재하지 않는 test라는 이름의 데이터베이스를 사용하도록 하겠습니다. 

 

MariaDB [(none)]> use test;

 

 

test 데이터베이스 안에 user라는 이름의 테이블을 생성하겠습니다. id와 name 두 개의 컬럼으로 구성된 테이블을 만들어주겠습니다. 

 

MariaDB [test]> CREATE TABLE user (id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(10) NOT NULL, PRIMARY KEY(id));

 

 

user 테이블의 컬럼들의 특성을 살펴보겠습니다. 

 

MariaDB [test]> SHOW COLUMNS FROM user;

 

name 컬럼의 타입 varchar(10)

 

여기서 name 열의 타입을 주목해주세요. varchar(10)으로 되어 있습니다. 영어기준으로 10개의 문자를 입력받을 수 있다는 뜻입니다. 그러면 문자가 10개 짜리인 name을 입력해보겠습니다. 

 

MariaDB [test]> INSERT INTO user (name) VALUES ('bskyvision');

 

 

쿼리에 성공했습니다. 이번에는 10개가 넘는 문자열을 입력해보겠습니다. 

 

MariaDB [test]> INSERT INTO user (name) VALUES ('blueskyvision');

 

 

보시다시피 에러 메시지가 뜹니다. name 컬럼에 대한 데이터로써 너무 길다고 말해주고 있죠. 10개 이하의 문자열은 문제 없습니다. 

 

MariaDB [test]> INSERT INTO user (name) VALUES ('sim');

 

 

그러면 이제 user 테이블의 행들을 모두 읽어보겠습니다. 

 

MariaDB [test]> SELECT * FROM user;

 

 

아까 blueskyvision을 name 열에 넣어준건 반영이 안 되었고 나머지는 모두 반영이 된 것을 확인하실 수 있습니다. 그런데 blueskyvision과 같이 비교적 긴 이름도 입력이 가능하게 하고 싶다면 어떻게 해야할까요? 

 

컬럼의 타입을 바꿔주면 됩니다. 다음과 같은 쿼리를 주면 됩니다. 이 포스팅에서 가장 중요한 부분입니다. 

 

MariaDB [test]> ALTER TABLE user MODIFY name varchar(30);

 

 

컬럼의 특성이 바뀌었는지 확인해보겠습니다. 

 

MariaDB [test]> SHOW COLUMNS FROM user;

 

varchar(10)이 varchar(30)으로 바뀌었죠?

 

varchar(10)이었던 타입이 varchar(30)으로 잘 바뀌었죠?

 

이제 좀 더 긴 이름들을 허용하는지 테스트해보겠습니다. 아까 문제였던 blueskyvision부터 넣어보겠습니다. 

 

MariaDB [test]> INSERT INTO user (name) VALUES ('blueskyvision');

 

 

성공했구요. 좀 더 긴 이름도 넣어보겠습니다. 

 

MariaDB [test]> INSERT INTO user (name) VALUES ('blueskyvision is bskyvision');

 

 

마지막으로 긴 이름 하나만 더 넣어볼게요. 

 

MariaDB [test]> INSERT INTO user (name) VALUES ('abcdefghijklmnopqrstuvwxyz');

 

 

자, 그럼 user 테이블의 모든 행을 한번 읽어보겠습니다.

 

MariaDB [test]> SELECT * FROM user;

 

 

입력한 이름이 테이블에 모두 다 잘 들어가있네요.^^

 

 

b스카이비전의 추천글

[sqlite3] 기본 명령어 및 create, read, update, delete 하는 법 정리