기존 열을 변경하면서 동시에 값 1을 할당하려면 MySQL의 DEFAULT 옵션을 활용하면 됩니다. 이렇게 설정해 두면 INSERT 명령 실행 시 해당 열에 값을 지정하지 않아도 자동으로 1이 입력됩니다.
테이블 생성하기
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable ( isAdult int ); Query OK, 0 rows affected (1.39 sec)
ALTER TABLE로 부울 열로 변경하고 기본값 1 할당하기
다음은 이미 생성된 isAdult 열을 ALTER TABLE 문의 CHANGE 절을 사용해 부울 타입으로 변경하고, 기본값 1을 할당하는 방법입니다.
mysql> alter table DemoTable CHANGE isAdult isAdult BOOLEAN DEFAULT '1' NOT NULL; Query OK, 0 rows affected (1.18 sec) Records: 0 Duplicates: 0 Warnings: 0
참고로 MySQL에서 BOOLEAN은 내부적으로 TINYINT(1)의 별칭(alias)이며, NOT NULL 제약 조건을 함께 지정하면 NULL 값이 저장되는 것을 방지할 수 있습니다.
레코드 삽입하기
INSERT 명령을 사용해 테이블에 레코드를 몇 개 삽입해 보겠습니다. 앞의 두 쿼리는 값을 지정하지 않았고, 세 번째 쿼리는 명시적으로 0을 넣었습니다.
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(0); Query OK, 1 row affected (0.15 sec)
결과 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+---------+ | isAdult | +---------+ | 1 | | 1 | | 0 | +---------+ 3 rows in set (0.00 sec)
출력 결과를 보면 값을 지정하지 않은 첫 번째와 두 번째 행에는 기본값인 1이 자동으로 들어갔고, 명시적으로 0을 삽입한 세 번째 행에는 그대로 0이 저장된 것을 확인할 수 있습니다. 이처럼 DEFAULT 옵션을 사용하면 열 변경과 기본값 설정을 한 번의 쿼리로 처리할 수 있습니다.