在MySQL中,整數可以被定義為有符號(signed)或者無符號(unsigned)。有符號整數可以表示負數和正數(范圍從-2147483648到2147483647),而無符號整數只能表示正數(范圍從0到4294967295)。
CREATE TABLE person ( id INT(10) UNSIGNED NOT NULL, name VARCHAR(50) NOT NULL, age TINYINT(3) UNSIGNED NOT NULL );
在這個表中,id列被定義為無符號整數,范圍從0到4294967295。而age列被定義為無符號tinyint整數,范圍從0到255。
有時,使用無符號整數可以節省存儲空間。例如,如果要存儲IP地址,可以使用無符號整數。IP地址是一個32位的數字,范圍從0到4294967295。
CREATE TABLE ip_address ( id INT(10) UNSIGNED NOT NULL, address INT(10) UNSIGNED NOT NULL );
在這個表中,address列被定義為無符號整數。由于IP地址是一個無符號整數,因此我們可以將其直接存儲在這個列中,而不需要進行任何轉換。
然而,有時使用無符號整數也會帶來一些問題。例如,如果使用無符號整數來存儲年齡,將無法存儲負數。如果想要存儲負數,必須使用有符號整數。
CREATE TABLE person ( id INT(10) UNSIGNED NOT NULL, name VARCHAR(50) NOT NULL, age TINYINT(3) SIGNED NOT NULL );
在這個表中,age列被定義為有符號tinyint整數,可以存儲范圍從-128到127的整數。這允許我們存儲負數,例如-10代表這個人的年齡是10歲。
上一篇mysql的斷開時間