int類型取值範圍怎麼算(INT類型知多少)
2023-09-19 21:33:47 2
int類型取值範圍怎麼算?前言:整型是MySQL中最常用的欄位類型之一,通常用於存儲整數,其中int是整型中最常用的,對於int類型你是否真正了解呢?本文會帶你熟悉int類型相關知識,也會介紹其他整型欄位的使用,我來為大家講解一下關於int類型取值範圍怎麼算?跟著小編一起來看一看吧!
int類型取值範圍怎麼算
前言:整型是MySQL中最常用的欄位類型之一,通常用於存儲整數,其中int是整型中最常用的,對於int類型你是否真正了解呢?本文會帶你熟悉int類型相關知識,也會介紹其他整型欄位的使用。
1.整型分類及存儲範圍
整數類型 字節 有符號範圍 無符號範圍 TINYINT 1 -128 ~ 127 0 ~ 255 SMALLINT 2 -32768 ~ 32767 0 ~ 65535 MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215 INT/INTEGER 4 -2147483648 ~ 2147483647 0 ~ 4294967295 bigint 8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615 表格一共有四列分別表示:欄位類型, 佔用字節數, 有符號範圍, 無符號範圍。我們拿int類型為例:int類型, 佔用字節數為4byte, 學過計算機原理的同學應該知道, 字節(byte)並非是計算機存儲的最小單位, 還有比字節(byte)更小的單位, 也就是位(bit),一個位就代表一個0或1; 8個位組成一個字節; 一般字節用大寫B來表示byte, 位用小寫b來表示bit.
計算機存儲單位的換算:
1B=8b
1KB=1024B
1MB=1024KB
那麼根據int類型允許存儲的字節數是4個字節, 我們就能換算出int unsigned(無符號)類型的能存儲的最小值為0, 最大值為4294967295(即4B=32b, 最大值即為32個1組成,即4294967295換算成二進位則是32個1)。
2.存儲範圍測試
mysql> CREATE TABLE test_int ( -> col1 TINYINT, -> col2 SMALLINT, -> col3 MEDIUMINT, -> col4 INT, -> col5 BIGINT -> ) ENGINE = INNODB DEFAULT CHARSET = utf8;Query OK, 0 rows affected (0.01 sec)mysql> show create table test_int\G*************************** 1. row *************************** Table: test_intCreate Table: CREATE TABLE `test_int` ( `col1` tinyint(4) DEFAULT NULL, `col2` smallint(6) DEFAULT NULL, `col3` mediumint(9) DEFAULT NULL, `col4` int(11) DEFAULT NULL, `col5` bigint(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)mysql> insert into test_int values (1234,123456,12345678,12345678901,12345678901234567890);Query OK, 1 row affected, 5 warnings (0.00 sec)mysql> insert into test_int values (-1234,-123456,-12345678,-12345678901,-12345678901234567890);Query OK, 1 row affected, 5 warnings (0.01 sec)mysql> show warnings; --------- ------ ----------------------------------------------- | Level | Code | Message | --------- ------ ----------------------------------------------- | Warning | 1264 | Out of range value for column 'col1' at row 1 || Warning | 1264 | Out of range value for column 'col2' at row 1 || Warning | 1264 | Out of range value for column 'col3' at row 1 || Warning | 1264 | Out of range value for column 'col4' at row 1 || Warning | 1264 | Out of range value for column 'col5' at row 1 | --------- ------ ----------------------------------------------- 5 rows in set (0.01 sec)mysql> select * from test_int; ------ -------- ---------- ------------- ---------------------- | col1 | col2 | col3 | col4 | col5 | ------ -------- ---------- ------------- ---------------------- | 127 | 32767 | 8388607 | 2147483647 | 9223372036854775807 || -128 | -32768 | -8388608 | -2147483648 | -9223372036854775808 | ------ -------- ---------- ------------- ----------------------
從上述測試中我們可以看出:有符號時,各種整型類型最大的存儲範圍,當存儲數字大小不在存儲範圍時,MySQL會產生告警,但數字可以插入,默認截取為可存儲的最大值或最小值。
,