MySQL 부울 필드 추가하기
MySQL에서 부울(Boolean) 타입의 필드를 추가하려면 tinyint(1), bool, 또는 boolean을 사용할 수 있습니다. 이 세 가지는 모두 동의어(synonym)로 취급됩니다.
만약 bool이나 boolean 데이터 타입을 사용하면, MySQL은 내부적으로 이를 tinyint(1)로 변환하여 저장합니다.
PHP에서의 참과 거짓 표현
PHP에서는 값 0이 거짓(false)을 나타내고, 1이 참(true)을 나타냅니다. 0을 제외한 다른 모든 숫자도 참으로 간주됩니다.
테이블 생성으로 내부 표현 확인하기
이제 실제로 테이블을 만들어서 bool 또는 boolean이 내부적으로 어떻게 저장되는지 확인해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다.
mysql> create table AddBoolDemo -> ( -> isToggle bool -> ); Query OK, 0 rows affected (1.24 sec)
테이블 DDL 확인
생성된 테이블의 DDL(Data Definition Language)을 확인하려면 아래 쿼리를 사용합니다.
SHOW CREATE TABLE yourTableName;
bool이 내부적으로 tinyint(1)로 변환되는 것을 확인해 보겠습니다. AddBoolDemo 테이블에 대해 실행해 봅니다.
mysql> show create table AddBoolDemo\G
실행 결과는 다음과 같습니다.
*************************** 1. row *************************** Table: AddBoolDemo Create Table: CREATE TABLE `addbooldemo` ( `isToggle` tinyint(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.00 sec)
위 출력 결과에서 볼 수 있듯이, bool로 선언한 필드가 실제로는 tinyint(1)로 정의된 것을 확인할 수 있습니다.
true, false 값 삽입하기
이제 INSERT 명령을 사용하여 테이블에 true, false, 그리고 숫자 리터럴인 1, 0을 각각 삽입해 보겠습니다.
mysql> insert into AddBoolDemo values(true); Query OK, 1 row affected (0.19 sec) mysql> insert into AddBoolDemo values(false); Query OK, 1 row affected (0.19 sec) mysql> insert into AddBoolDemo values(1); Query OK, 1 row affected (0.10 sec) mysql> insert into AddBoolDemo values(0); Query OK, 1 row affected (0.18 sec)
저장된 데이터 확인
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from AddBoolDemo;
실행 결과는 다음과 같습니다.
+----------+ | isToggle | +----------+ | 1 | | 0 | | 1 | | 0 | +----------+ 4 rows in set (0.00 sec)
결과를 보면 true와 1은 모두 1로, false와 0은 모두 0으로 저장된 것을 확인할 수 있습니다. 즉, MySQL에서 부울 값은 결국 0과 1의 정수로 처리됩니다.