MySQL에서 TINYINT 컬럼의 기본값을 1로 설정하려면 ALTER TABLE 문과 DEFAULT 옵션을 함께 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 기본값을 변경한 뒤 그 결과를 확인하는 전체 과정을 단계별로 살펴보겠습니다.
기본 문법
컬럼의 기본값을 변경하는 기본적인 문법은 다음과 같습니다.
ALTER TABLE 테이블이름
CHANGE 기존컬럼이름 새컬럼이름 TINYINT(1) DEFAULT 1 NOT NULL;
CHANGE 절을 사용할 때는 컬럼 이름을 두 번(기존 이름, 새 이름) 작성해야 합니다. 컬럼 이름을 그대로 유지하면서 속성만 변경하려면 MODIFY 절을 사용하는 것도 좋은 방법입니다.
1단계: 샘플 테이블 생성
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName varchar(20),
UserAge int,
isMarried tinyint(1)
);
Query OK, 0 rows affected (0.80 sec)
2단계: 테이블 구조 확인
DESC 명령으로 현재 테이블 구조를 살펴보겠습니다.
mysql> desc DemoTable;
실행 결과는 다음과 같습니다. isMarried 컬럼의 Default 값이 아직 NULL로 설정되어 있는 것을 확인할 수 있습니다.
+-----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | UserName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | | isMarried | tinyint(1) | YES | | NULL | | +-----------+-------------+------+-----+---------+----------------+ 4 rows in set (0.21 sec)
3단계: TINYINT 기본값을 1로 변경
다음 쿼리를 실행하면 isMarried 컬럼의 기본값이 1로 변경되고, 동시에 NOT NULL 제약 조건도 적용됩니다.
mysql> alter table DemoTable change isMarried isMarried TINYINT(1) DEFAULT 1 NOT NULL;
Query OK, 0 rows affected (1.29 sec)
Records: 0 Duplicates: 0 Warnings: 0
4단계: 변경 결과 확인
테이블 구조를 다시 조회해 보겠습니다.
mysql> desc DemoTable;
결과를 보면 isMarried 컬럼의 Null 항목이 YES에서 NO로 바뀌었고, Default 값이 1로 성공적으로 변경된 것을 확인할 수 있습니다.
+-----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | UserName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | | isMarried | tinyint(1) | NO | | 1 | | +-----------+-------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec)
추가 팁
TINYINT(1)은 MySQL에서 불리언(Boolean) 값을 저장할 때 널리 사용되는 타입입니다. 일반적으로 0은 거짓(false), 1은 참(true)을 나타냅니다. 따라서 위 예제의 isMarried처럼 예/아니오 형태의 데이터를 다룰 때는 기본값을 미리 0 또는 1로 지정해 두면, INSERT 시 해당 컬럼 값을 생략해도 의도하지 않은 NULL이 저장되는 것을 방지할 수 있습니다.