MySQL的UNSIGNED是一種數據類型修飾符,可以使整數類型的列變成無符號的。在使用UNSIGNED時需要注意一些細節,下面我們來進行介紹。
CREATE TABLE demo ( id INT UNSIGNED, age TINYINT UNSIGNED );
上面的代碼中,id 和 age 都使用了 UNSIGNED 修飾符,表示它們是無符號整數類型。
使用 UNSIGNED 的一個好處是可以擴大整數類型的取值范圍。例如,一個 TINYINT 類型的列,如果不使用 UNSIGNED,最大的取值范圍只有 -128 到 127,而使用 UNSIGNED 后,取值范圍可以擴大為 0 到 255。
ALTER TABLE demo MODIFY COLUMN age INT UNSIGNED;
如果要將一個已經存在的列由有符號類型修改為無符號類型,使用 ALTER TABLE 命令并指定 MODIFY COLUMN 就可以了。
另外需要注意的是,UNSIGNED 在與有符號類型進行計算時需要特別小心。如果一個無符號的整數類型與一個有符號的整數類型進行計算,結果可能會出現不符合預期的情況。
SELECT -1< 1 UNSIGNED;
上面的代碼中,-1 被轉換成了 UNSIGNED 類型,變成了一個非常大的整數,因此結果會是 false,這點需要特別注意。