programing

MySQL 부울 "tinyint(1)"은 127까지 값을 유지합니다.

codeshow 2023. 10. 9. 23:38
반응형

MySQL 부울 "tinyint(1)"은 127까지 값을 유지합니다.

재고가 있는지 참/거짓 필드를 만들고 싶었습니다.

부울(Boolean)로 설정하고 싶었습니다.tinyint(1)), 재고가 있는 경우 1, 재고가 없는 경우 0입니다.

공급업체로부터 사료를 공급받고 있어서, "그 업체들이 재고를 몇 개나 넘기면 어떡하죠?"라고 속으로 생각했습니다.

그래서 1보다 높은 숫자를 삽입하면 어떻게 되는지 궁금했습니다.기본값이 1일 것으로 예상했습니다.

놀랍게도 이 번호는 127까지, 기본값을 초과하는 번호는 127까지 유지할 수 있습니다.

누가 왜 그런지 설명해 줄 수 있나요?

사인한TINYINTdata type은 -128에서 127사이의 정수 값을 저장할 수 있습니다.

하지만,TINYINT(1)저장할 수 있는 최소 또는 최대값은 변경되지 않습니다.해당 유형의 값이 출력으로 출력될 때 한 자리만 표시하라는 내용입니다.

tinyint데이터 유형은 1바이트의 스토리지를 활용합니다.1바이트(-128~127)를 사용하여 256개의 가능한 정수 값을 저장할 수 있습니다.라고 정의한다면tinyint unsigned그러면 음의 값은 버려지므로 (0 ~ 255)를 저장할 수 있습니다.

MySQL이 이를 처리하는 방법은 여기를 참조하십시오.MySQL > 5.0.5를 사용하는 경우BIT데이터 유형으로(이전 버전의 경우)BIT로 해석될 것입니다.TINYINT(1).하지만, 그(1)-part는 내부 길이가 아닌 표시 폭입니다.

CREATE TABLE foo_test(
col_1 TINYINT
, col_2 TINYINT(2) 
, col_3 TINYINT(3) 
, col_4 TINYINT(2) ZEROFILL
, col_5 TINYINT(3) ZEROFILL
);

INSERT INTO foo_test( col_1,col_2,col_3,col_4,col_5 )
SELECT 1, 1,1,1,1
UNION ALL
SELECT 10, 10,10,10,10
UNION ALL
SELECT 100, 100,100,100,100;

SELECT * FROM foo_test; 

**OUTPUT:-**   
 col_1   col_2   col_3   col_4   col_5  
------  ------  ------  ------  --------
     1       1       1      01       001
    10      10      10      10       010
   100     100     100     100       100

테이블을 작성하는 동안 0 채우기를 사용하면 MySQL에서 시작 부분에 0이 표시됩니다.제로필을 사용하지 않았다면 효과가 없습니다.

언급URL : https://stackoverflow.com/questions/4401673/mysql-boolean-tinyint1-holds-values-up-to-127

반응형