MySQL中的integer unsigned是指無符號整數類型。在MySQL中,integer類型可以存儲從-2147483648到2147483647之間的整數值。而unsigned integer類型則可以存儲從0到4294967295之間的整數值。由于不必存儲符號,所以unsigned integer類型能夠存儲更大的數值范圍。
CREATE TABLE users ( id INT(10) UNSIGNED AUTO_INCREMENT, name VARCHAR(50), age TINYINT(3) UNSIGNED, PRIMARY KEY (id) );
在上面的代碼中,我們使用了INT(10) UNSIGNED來定義了一個id列。這個列是無符號整數類型,并且可以用作自增列。為了避免溢出,我們使用了INT(10),這會限制該列只能存儲10位數的整數值。
需要注意的是,在使用無符號整數類型時,不能存儲負數值。如果試圖存儲負數值,MySQL會將該值轉換為0。
INSERT INTO users (name, age) VALUES ('John', -20);
上述代碼中,age列被定義為TINYINT(3) UNSIGNED,但是我們試圖插入了一個負數。在這種情況下,MySQL會將-20轉換為0,因此age列的值為0。
在出現這種情況時,我們可以使用SIGNED類型來存儲可能出現負數的整數值。但是,需要注意的是,如果我們使用SIGNED類型來存儲本來就應該是無符號整數值的數據,那么會導致數據范圍的浪費。