>  기사  >  데이터 베이스  >  Mysqltinyint(1)과tinyint(4)의 차이점은 무엇입니까?

Mysqltinyint(1)과tinyint(4)의 차이점은 무엇입니까?

WBOY
WBOY앞으로
2023-06-01 08:31:321119검색

tinyint(M)란 무엇인가요?

먼저 mysql에서 문자열 유형 varchar(M)과 숫자 유형 tinyint(M)의 차이점을 알아볼까요?
문자열 열 유형: varchar(M) 측면에서 M은 필드에 저장할 수 있는 최대 문자 길이, 즉 필드 길이입니다. 설정에 따라 필드 길이를 초과하는 데이터를 삽입할 경우 오류가 발생할 수 있으며, 오류가 발생하지 않더라도 삽입한 데이터는 미리 정의된 필드 길이에 맞게 자동으로 잘립니다. 따라서 varchar(20)과 varchar(40)은 서로 다릅니다. 이는 필드가 저장할 수 있는 데이터의 길이를 실제로 반영합니다 .
숫자 열 유형: 길이 수정자는 최대 표시 너비를 나타내며 필드의 물리적 저장과는 아무 관련이 없습니다. 즉,tinyint(1)과tinyint(4)가 저장할 수 있는 숫자 범위는 모두 -128...127(또는 부호 없는 값의 경우 0...255)입니다. 물론 동일한 데이터 유형입니다. , 여전히 약간의 차이가 있습니다. 아래 지침이 있습니다. tinyint
데이터 유형의 경우 1바이트만 차지합니다.

- unsigned(부호 없음), 범위는 0~255, 기본 길이는 3입니다.
- 서명됨, 범위는 -128~127, 기본 길이는 4입니다.


Range 알고리즘

:tinyint는 1바이트를 차지하고, 1바이트는 8비트, 즉 1*8=8로 표현할 수 있는 숫자의 수는 2의 8승(2^8 = 256개)입니다. ) .

Difference

: zerofill을 사용하는 경우 실제 길이가 지정된 표시 길이에 도달하지 않으면 앞에 0이 채워집니다. (zerofill의 기능은 간단히 말해서 0을 채우는 것입니다)Test

먼저 테스트 테이블을 만들고 모든 Tinyint 유형에 대해 zerofill을 사용합니다.

CREATE TABLE `pre_demo` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `unsigned_t` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000',
  `signed_t` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `t1` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0',
  `t2` tinyint(2) unsigned zerofill NOT NULL DEFAULT '00',
  `t3` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000',
  `t4` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `t5` tinyint(5) unsigned zerofill NOT NULL DEFAULT '00000',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

그런 다음 테스트 데이터를 삽입합니다.

NSERT INTO pre_demo VALUES(NULL,8,8,8,8,8,8,8);
INSERT INTO pre_demo VALUES(NULL,123,123,123,123,123,123,123);

마지막으로 데이터 테이블의 데이터를 쿼리합니다.

rrreerrree

위 내용은 Mysqltinyint(1)과tinyint(4)의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제