Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 BIT와 TINYINT의 차이점은 무엇입니까?

<시간/>

BIT는 1비트 값을 저장하는 데 사용할 수 있습니다. 0 또는 1일 수 있습니다. 예를 들어 데이터 유형이 BIT인 2와 같이 저장할 수 없습니다. BIT 데이터 유형으로 2를 삽입하려고 하면 MySQL에서 오류가 발생합니다.

TINYINT는 8비트 값을 저장하는 데 사용할 수 있습니다. 저장할 수 있는 최대 값은 127입니다. 예를 들어 8비트 값으로 987을 저장할 수 없습니다. TINYINT 데이터 유형으로 987을 삽입하려고 하면 MySQL에서 오류가 발생합니다.

MySQL 버전 8.0.12를 통해 작업해 보겠습니다.

시스템에 설치된 버전을 확인하려면

mysql> select version();

다음은 출력입니다.

+-----------+
| version() |
+-----------+
| 8.0.12    |
+-----------+
1 row in set (0.00 sec)

비트 유형

BIT 유형의 테이블 생성.

mysql> create table BitDemo
   -> (
   -> Id BIT
   -> );
Query OK, 0 rows affected (0.56 sec)

'BitDemo' 테이블에 레코드 삽입.

mysql> insert into BitDemo values(1);
Query OK, 1 row affected (0.13 sec)

mysql>  insert into BitDemo values(0);
Query OK, 1 row affected (0.33 sec)

Bit에 2를 삽입할 때마다 오류가 발생합니다.

mysql> insert into BitDemo values(2);
ERROR 1406 (22001): Data too long for column 'Id' at row 1

TINYINT

TINYINT 데이터 유형으로 테이블을 생성합니다.

mysql> create table TinyIntDemo
   -> (
   -> Id TINYINT
   -> );
Query OK, 0 rows affected (0.69 sec)

레코드 삽입 중.

mysql> insert into TinyIntDemo values(123);
Query OK, 1 row affected (0.17 sec)

mysql>  insert into TinyIntDemo values(97);
Query OK, 1 row affected (0.15 sec)

mysql>  insert into TinyIntDemo values(127);
Query OK, 1 row affected (0.16 sec)

127을 초과하는 값을 삽입하려고 할 때마다 오류가 발생합니다.

mysql> insert into TinyIntDemo values(9876);
ERROR 1264 (22003): Out of range value for column 'Id' at row 1
mysql>  insert into TinyIntDemo values(987);
ERROR 1264 (22003): Out of range value for column 'Id' at row
mysql> insert into TinyIntDemo values(255);
ERROR 1264 (22003): Out of range value for column 'Id' at row 1
mysql> insert into TinyIntDemo values(254);
ERROR 1264 (22003): Out of range value for column 'Id' at row 1
mysql>  insert into TinyIntDemo values(200);
ERROR 1264 (22003): Out of range value for column 'Id' at row 1
mysql>  insert into TinyIntDemo values(199);
ERROR 1264 (22003): Out of range value for column 'Id' at row 1

저장할 수 있는 최대 값은 127입니다.

삽입된 모든 유효한 레코드를 표시하려면 SELECT 명령을 사용합니다.

mysql> select *from TinyIntDemo;

다음은 출력입니다.

+------+
| Id   |
+------+
|  123 |
|   97 |
|  127 |
+------+
3 rows in set (0.00 sec)