Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 TINYINT 컬럼의 기본값을 1로 변경하는 방법

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이 저장되는 것을 방지할 수 있습니다.