MySQL에서 BOOL과 BOOLEAN은 모두 TINYINT(1)와 완전히 동일하게 동작합니다. 즉, 두 키워드 모두 TINYINT(1)의 별칭(synonym)이라고 할 수 있습니다. 따라서 실질적인 기능상의 차이는 없으며, 저장되는 값도 0 또는 1로 처리됩니다.
BOOLEAN 사용 예제
먼저 BOOLEAN 타입의 컬럼을 가진 테이블을 생성하는 쿼리입니다.
mysql> create table Demo
-> (
-> isVaidUser boolean
-> );
Query OK, 0 rows affected (1.08 sec)
INSERT 명령어를 사용해 테이블에 레코드를 삽입하는 쿼리는 다음과 같습니다.
mysql> insert into Demo values(true);
Query OK, 1 row affected (0.19 sec)
mysql> insert into Demo values(0);
Query OK, 1 row affected (0.17 sec)
SELECT 명령어를 사용해 테이블의 모든 값을 조회해 보겠습니다.
mysql> select *from Demo;
출력 결과
+------------+
| isVaidUser |
+------------+
| 1 |
| 0 |
+------------+
2 rows in set (0.00 sec)
BOOL 사용 예제
이번에는 BOOL 타입을 사용한 예제입니다. 다음은 테이블을 생성하는 쿼리입니다.
mysql> create table Demo1
-> (
-> isVaidUser bool
-> );
Query OK, 0 rows affected (0.54 sec)
INSERT 명령어로 레코드를 삽입합니다.
mysql> insert into Demo1 values(1);
Query OK, 1 row affected (0.14 sec)
mysql> insert into Demo1 values(false);
Query OK, 1 row affected (0.16 sec)
SELECT 명령어로 테이블의 모든 값을 조회합니다.
mysql> select *from Demo1;
출력 결과
+------------+
| isVaidUser |
+------------+
| 1 |
| 0 |
+------------+
2 rows in set (0.00 sec)
결론
위 출력 결과를 보면 false가 0으로 변환된 것을 확인할 수 있습니다. 이는 BOOL과 BOOLEAN이 내부적으로 암묵적으로 TINYINT(1)로 변환되기 때문입니다. 정리하면 다음과 같습니다.
- BOOL = BOOLEAN = TINYINT(1): 세 가지는 모두 같은 의미로 사용됩니다.
true는1로,false는0으로 저장됩니다.- 저장 가능한 값의 범위는 사실상 0~9까지 입력할 수 있지만, 일반적으로 불리언 용도로는 0과 1만 사용하는 것이 권장됩니다.
따라서 MySQL에서 논리값을 다룰 때는 BOOL이나 BOOLEAN 중 어떤 것을 선택해도 무방하며, 둘의 결과는 완전히 동일합니다.