mysql에서 테이블의 열을 추가하는 명령어를 알아봅시다. 이것은 alter 명령어로 할 수 있는데요. 개략적인 문법은 다음과 같습니다.

 

 

alter table <테이블명> add <컬럼명> <자료형> <제약조건>

 

 

 노랗게 칠한 것을 기준으로 개행을 주면 편합니다. 이제 예제를 보도록 하겠습니다.

 

 


 어제 실습한, worker 테이블입니다.

 

 

 이름과 연봉밖에 없습니다. 그런데 뭔가 부족한 거 같아요. 왜냐하면, 이름이 중복이 될 수 있기 때문이에요. 동명 이인이라고 하나요? 그래서, 저는 id라는 새로운 필드를 추가하고자 합니다. 테이블에 열을 추가하겠다는 겁니다.

 

 

 그래서, 저는 id라는 필드를 추가하려고 이 명령어를 쳤어요. 그리고 이것은 int형으로 받고요. auto_increment로 받았습니다. 자동 증가입니다. 그런데 이걸 그대로 넣으면 아래와 같은 오류가 발생합니다.

 

 

 it must be defined as a key. 즉, id는 key로 정의가 되어야 한다는 거네요. 그러면 키 조건을 하나 더 추가합시다.

 

 

 2번째 줄에, add id int primary key auto_increment; 라고 되어 있어요. int 자료형을 가지는, id라는 필드를 추가하는데, 뒤에 수식어가 중요합니다. id가 기본키로 설정되었고, 자동 증가되게 한다. 를 수식어로 가지고 있어요. 그런 특성을 가지는 필드를 테이블에 추가한 셈이 됩니다.

 

 

 즉, worker들이 unique한 값을 가지는 id, 대학생으로 치면 학번이 테이블에 추가된 것을 볼 수 있어요. 그런데, 뭔가 허전한 것을 볼 수 있어요. 직원은 있는데, 부서가 없어요. dept라는 필드를 하나 추가해 줄 건데요. 이번에는 _name 뒤에 추가해 봅시다. 그리고, dept의 제약 조건은 not null을 줍시다.

 

 

 그러면, 이런 식으로 작성할 수 있는데요. 자료형 나오고, 뒤에 not null이 나올 겁니다. 그 뒤에 after _name이 있습니다. 이것은 _name이라는 필드 뒤에 추가하라는 의미입니다.

 

 

 _name 뒤에 잘 추가된 것을 볼 수 있어요. 맨 앞에 추가하려면 어떻게 하면 좋을까요? 만약에 dept라는 필드를 제일 처음 열에 추가하려면 어떻게 했어야 할까요? after _name 대신에, first를 써 주면 됩니다.

 

 


 저와 친구가 만들고 있는 웹 사이트에서 쓰고 있는 테이블입니다. primary key로 설정되어 있는 id와, user_id, 닉네임 등의 필드가 있는 member 테이블입니다. 이것은 회원 가입이나 로그인을 할 때 쓰이는 것일 겁니다.

 

 

 그런데, 이것 만으로는 뭔가 정보가 부족할 거 같아요. 일단, id가 운영자인지 판단하기 위한 필드를 id 뒤에 추가합시다. 이것은 그냥 boolean으로 합시다.

 

 

 그러면 이렇게 명령어를 쓰면 될 겁니다. admin_flag를 boolean 형으로, id 필드 뒤에 추가하겠다는 의미입니다. 다음에 주소는 테이블의 맨 뒤에 추가할 거에요. varchar(40) 형으로요.

 

 

 그러면 요렇게 추가하면 될 겁니다.