기본값으로 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.