在 MySQL 中 int (10) 和 int (11) 的差異

Guanhui
發布: 2020-05-20 15:18:00
轉載
3633 人瀏覽過

在 MySQL 中 int (10) 和 int (11) 的差異

最近在找工作所以一直在面試,在面試過程中暴露了自己很多不足的地方,一直在總結和歸納。可能大部分面試官對 mysql 的問題都會問資料庫優化啊、主從複製啊、索引啊、引擎啊等等之類的。那麼讓我印象最深刻的是 int (10) 和 int (11) 有什麼不同。這好像是最基礎的問題了,我好像從來沒有在意過。當時有點兒懵逼,有什麼差別?不知道!沒想過!

那麼回到家以後,我趕緊複習了下 mysql 的資料型態相關知識。對整數類型做些說明。

mysql 中整數資料類型

##說明儲存需求tinyint很小的整數1 位元組smallintmediumint#int(integer)bigint不同類型的取值範圍
資料類型
##小的整數 2 位元組
中等大小的整數 3 位元組
普通大小的整數 4 位元組
大整數 8 位元組

##資料類型有符號無符號#tinyint-128~1270~ 255smallint-32768~327670~65535#mediumint-8388608~83886070~16777215int(integer)-2147483648~2147483647bigint不同數據類型的預設顯示寬度
##-2147483648~2147483647 #-2142949672954967
-9223372036854775808~9223372036854775807 0~18446744073709551615

資料型別##tinyint4smallint##6#91120* 因為負號佔了一個數字位,所以各類型的寬度是最大值數字位1 位。例如 tinyint 的最大數字位元是 3,加負號所以顯示寬度是 4。 那麼取值範圍和顯示寬度到底有什麼關係呢?我利用tinyint 做了個實驗,首先創建一張表如下
預設顯示寬度
#mediumint
int(integer)
#bigint
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)
登入後複製

我分別創建了有符號tinyint 類型的test_id_1 顯示寬度為1 和test_id_2 顯示寬度為4 兩個字段,接下來插入數據,同時插入- 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!