기본값으로 false를 사용하여 MySQL에서 부울 열을 만드시겠습니까?


127

boolean기본값이 인 열 을 사용하여 MySQL에서 테이블을 만들고 싶습니다 false. 하지만 기본적으로 NULL을 받아들이고 있습니다.

답변:


202

기본값으로 ( 0거짓을 의미) 또는 1(참을 의미 ) 를 지정해야 합니다. 예를 들면 다음과 같습니다.

create table mytable (
     mybool boolean not null default 0
);

FYI : boolean는의 별칭입니다 tinyint(1).

증거는 다음과 같습니다.

mysql> create table mytable (
    ->          mybool boolean not null default 0
    ->     );
Query OK, 0 rows affected (0.35 sec)

mysql> insert into mytable () values ();
Query OK, 1 row affected (0.00 sec)

mysql> select * from mytable;
+--------+
| mybool |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

참고 : 내 테스트는 다음 버전의 MySQL에서 수행되었습니다.

mysql> select version();
+----------------+
| version()      |
+----------------+
| 5.0.18-max-log |
+----------------+
1 row in set (0.00 sec)

2
아니면 그렇습니까? 쉘 스크립팅에서 0은 성공 또는 '참'을 의미 할 수 있습니다. MySQL이 실제로 'true'와 'false'를 반환하여 값이 의미하는 바를 결정하는 코드에 의존하지 않아도된다면 좋을 것입니다.
tu-Reinstate Monica-dor duh

3
부울은 tinyint (1)의 별칭이므로 부울을 0과 1 이외의 숫자로 설정할 수 있으며 불평하지 않습니다! 즉, 실수로 필드를 늘리거나 줄이면 데이터를 엉망으로 만들 수 있습니다! : -O 대신 ENUM 필드를 사용하는 것이 좋습니다.
tu-Reinstate Monica-dor duh

3
"성공"과 "진실"은 완전히 직교하는 것입니다. 오류 코드는 부울이 아닙니다.
Matthew Read

14

참 / 거짓에 대해 MySQL에서 ENUM을 사용하면 추가 코드없이 참 / 거짓 값을주고받습니다.

ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'

11

다음과 같이 생성시 기본값을 설정할 수 있습니다.

CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);

1

부울 열을 null이 아닌 것으로 만드는 경우 기본 '기본값'값은 false입니다. 명시 적으로 지정할 필요가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.