MySQL에서 int(10)과 int(11)의 차이점

Guanhui
풀어 주다: 2020-05-20 15:18:00
앞으로
3808명이 탐색했습니다.

MySQL에서 int(10)과 int(11)의 차이점

최근에 일자리를 구하고 있어서 면접을 진행하면서 저의 부족한 점을 많이 노출시켜서 정리해봤습니다. 아마도 대부분의 면접관은 데이터베이스 최적화, 마스터-슬레이브 복제, 인덱스, 엔진 등과 같은 MySQL에 관한 질문을 할 것입니다. 그래서 저에게 가장 충격적인 것은 int (10)과 int (11)의 차이점입니다. 이게 가장 기본적인 질문인 것 같은데, 저는 별로 신경쓰지 않는 것 같아요. 그땐 좀 헷갈렸는데, 무슨 차이가 있나요? 모르겠어요! 그것에 대해 생각해 본 적이 없습니다!

그래서 집에 와서 빠르게 mysql 데이터타입 관련 지식을 복습해봤습니다. 정수 유형에 대한 몇 마디.

mysql의 정수 데이터 유형

데이터 유형 설명 저장 요구 사항
tinyint 매우 작은 정수 1바이트
smallint 작은 정수 2바이트
mediumint 중간 크기 정수 3바이트
int(integer) 중간 크기 정수 4바이트
bigint 대형 정수 8바이트

다양한 유형의 값 범위

데이터 유형 Signed Unsigned
tinyint -128~127 0255
smallint -32768~32767 0~65535
mediumint -8388608~8388607 0~16777215
int(int eger) -2147483648~2147483647 0~4294967295
bigint -9223372036854775808~9223372036854775807 0~18446744073709551615

다양한 데이터 유형의 기본 표시 너비

데이터 유형 기본 표시 너비
tinyint 4
smallint 6
mediumint 9
int(integer) 11
bigint 20

* 음수 기호는 한 자리를 차지하므로 각 유형의 너비는 최대 개수입니다. 숫자 + 1비트. 예를 들어,tinyint의 최대 자릿수는 3에 음수 기호를 더한 값이므로 표시 너비는 4입니다.

그럼 값 범위와 표시 너비 사이에는 어떤 관계가 있나요? Tinyint를 사용하여 실험을 했습니다. 먼저 다음과 같이 테이블을 만들었습니다.

mysql> desc test_integer;
+-----------+------------+------+-----+---------+----------------+
| Field     | Type       | Null | Key | Default | Extra          |
+-----------+------------+------+-----+---------+----------------+
| id        | int(11)    | NO   | PRI | NULL    | auto_increment |
| test_id_1 | tinyint(1) | NO   |     | NULL    |                |
| test_id_2 | tinyint(4) | NO   |     | NULL    |                |
+-----------+------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
로그인 후 복사

표시 너비가 1인 test_id_1과 표시 너비가 4인 test_id_2 필드를 서명된 Tinyint 유형으로 생성했습니다. 동시에 - 128, 1 및 127을 사용하여 무슨 일이 일어나는지 확인하십시오.

mysql> insert into test_integer (test_id_1,test_id_2) values (-128,-128), (1,1), (127,127);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0
로그인 후 복사

ok는 삽입이 성공했다는 메시지를 표시합니다.

mysql> select * from test_integer;
+----+-----------+-----------+
| id | test_id_1 | test_id_2 |
+----+-----------+-----------+
|  1 |      -128 |      -128 |
|  2 |         1 |         1 |
|  3 |       127 |       127 |
+----+-----------+-----------+
3 rows in set (0.00 sec)
로그인 후 복사

를 쿼리하면 결과는 동일합니다. 위의 실험 후 다음과 같은 결론에 도달합니다.

디스플레이 너비 정수 유형의 값 범위는 관련이 없습니다. 표시 너비는 MySQL에서 표시할 수 있는 최대 숫자 수만 지정합니다. 자릿수가 지정된 너비보다 작은 경우 표시 너비보다 큰 값이 삽입되는 한 공백으로 채워집니다. 값이 이 유형의 정수 값 범위를 초과하지 않는 경우에도 해당 값을 삽입하고 표시할 수 있습니다.

마찬가지로 int(10)과 int(11) 사이에는 표시 너비가 다르다는 점만 빼면 차이가 없습니다.

추천 튜토리얼: "PHP 튜토리얼"

위 내용은 MySQL에서 int(10)과 int(11)의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿