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

MySQL에서 TINYINT(1)과 BOOLEAN의 차이점은 무엇일까요?

MySQL에서 TINYINT(1)BOOLEAN 사이에는 실질적인 차이가 없습니다. BOOL 또는 BOOLEAN 키워드는 내부적으로 TINYINT(1)로 변환되며, 즉 BOOL과 BOOLEAN은 TINYINT(1)의 동의어(synonym)라고 할 수 있습니다.

테이블 생성하기

먼저 예제용 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    isMarried Boolean
);
Query OK, 0 rows affected (1.77 sec)

테이블 구조 확인하기

DESC 명령어를 사용하여 테이블 구조를 확인해 보겠습니다.

mysql> desc DemoTable;

위 명령어를 실행하면 다음과 같은 결과가 출력됩니다.

+-----------+------------+------+-----+---------+-------+
| Field     | Type       | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+-------+
| isMarried | tinyint(1) | YES  |     | NULL    |       |
+-----------+------------+------+-----+---------+-------+
1 row in set (0.01 sec)

출력 결과에서 확인할 수 있듯이, BOOLEAN으로 선언한 컬럼이 실제로는 tinyint(1) 타입으로 저장된 것을 알 수 있습니다.

데이터 삽입하기

INSERT 명령어를 사용하여 테이블에 레코드를 삽입합니다.

mysql> insert into DemoTable values(true);
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable values(false);
Query OK, 1 row affected (0.16 sec)

데이터 조회하기

SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-----------+
| isMarried |
+-----------+
|         1 |
|         0 |
+-----------+
2 rows in set (0.00 sec)

결과를 보면 true는 1로, false는 0으로 저장된 것을 확인할 수 있습니다. 이처럼 MySQL에서 BOOLEAN은 단순히 TINYINT(1)의 별칭일 뿐이므로, 어떤 표현을 사용하더라도 동일하게 동작합니다. 참고로 MySQL 8.0.17 버전부터는 디스플레이 폭을 나타내는 숫자(예: TINYINT(1)의 '1')가 더 이상 권장되지 않으므로, 가독성을 위해 BOOLEAN 키워드를 사용하는 것이 좋습니다.