MySQL 부울 "tinyint(1)"은 127까지 값을 유지합니다.
재고가 있는지 참/거짓 필드를 만들고 싶었습니다.
부울(Boolean)로 설정하고 싶었습니다.tinyint(1)
), 재고가 있는 경우 1, 재고가 없는 경우 0입니다.
공급업체로부터 사료를 공급받고 있어서, "그 업체들이 재고를 몇 개나 넘기면 어떡하죠?"라고 속으로 생각했습니다.
그래서 1보다 높은 숫자를 삽입하면 어떻게 되는지 궁금했습니다.기본값이 1일 것으로 예상했습니다.
놀랍게도 이 번호는 127까지, 기본값을 초과하는 번호는 127까지 유지할 수 있습니다.
누가 왜 그런지 설명해 줄 수 있나요?
사인한TINYINT
data 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
'programing' 카테고리의 다른 글
IPv4 클라이언트/서버 앱에서 IPv6 지원 추가 - sin6_flowinfo 및 sin6_scope_id 필드? (0) | 2023.10.09 |
---|---|
두 개의 개별 쿼리가 순간적으로 발생합니다.하위 쿼리로 쿼리가 매우 느립니다. 왜죠? mysql / mariadb (0) | 2023.10.09 |
NGINX가 임의로 작동을 중지하므로 수동 재시작이 필요합니다. (0) | 2023.10.09 |
ASP.NET - Ajax.파라미터를 사용하여 양식 OnSuccess 콜백 시작 (0) | 2023.10.04 |
높이가 작동하지 않는 이유: 100%는 화면 높이로 디브를 확장할 수 있습니다. (0) | 2023.10.04 |