MySql:int(10) 與 int unsigned 之前的區別


先了解一下兩者都代表什么意思

int(10)

給 int 類型設置字節長度為 10,int 類型默認的值范圍大小是:-2147483648和2147483647

unsigned

設置 int 類型不能為負數。

創建 MySql 表進行演示

創建 test-in 演示 int(10)

CREATE TABLE `test-in` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
)
  1. 向 test-in 表中插入數據。
insert into `test-in` values(2147483647);
insert into `test-in` values(-2147483648);
  1. 查看表中數據。
    image.png

  2. 嘗試一下,在這兩個區間之外進行插入數據,是否可以成功插入。
    image.png

image.png

  1. 上面圖中可以看到兩條 Sql 均都報出異常,插入的值超出了范圍,沒辦法進行插入數據,只能在 int 范圍區間內進行數據插入。

創建 test-un 演示 int unsigned

CREATE TABLE `test-un` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
)
  1. 創建后查詢一下 sql
    image.png

在 sql 語句中,我並沒有指定 int 類型的字節長度,執行完 sql 以后,unsigned 會默認設置 int 字節長度為 10。

  1. 上述中說過使用 unsigned 屬性是沒辦法向表中插入負數的,這里嘗試一下
    image.png

可以看到圖中提示插入的值超出了范圍,由於 unsigned 屬性的限制,我們沒有辦法插入負數。

  1. 測試超過 int 默認的整數最大值插入
    image.png

上圖中插入成功了,說明在使用 unsigned 屬性時,將默認 int 類型的取值范圍調整了。

  1. 調整后的 int 取值范圍

intMaxValue = 2147483648 + 2147483647 = 4294967295

  1. 測試一下是否真的可以插入 4294967295 到數據庫中
    image.png

答案是可以的。

區別總結

  1. 默認的 int 類型,取值范圍是 -2147483648-2147483647 之間,而 unsigned 的取值范圍是 0-4294967295 之間。
  2. 默認的 int 類型,允許插入負數,unsigned 設置后,無法插入負數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM