2016-11-22 83 views
-1

讓我們考慮TINYINT。 W3Schools表示它的有符號範圍是從-128到127,其無符號範圍是從0到255.MySQL數據類型 - 有符號無符號

1)爲什麼說它的範圍是從-128到127,爲什麼不是它的範圍是從 - 128到255。

2)這些範圍是否意味着我不能取-129或256的值? (比方說,我正在填寫一個表格,我有一個文本框)

+2

1.因爲它的範圍是從-128到255'不是真的。 2.是的,你不能在256或-129使用tinyint。 –

回答

0

有符號和無符號的範圍是相同的,它都是關於優化。無符號僅用於上限意味着它不允許負數。所以當你知道你只需要正數時,總是使用ununsigned。

檢查它here

+0

請了解範圍。他們是不同的。 – Drew

+0

「所以當你知道你只需要正數時,總是使用ununsigned。」這部分幫助...謝謝。 –

0

TINYINT值不是從-128到255,這就是爲什麼他們不說出來。

創建表時,它是有符號的或無符號的。如果不指定,然後默認值,如果指定的無符號在創建表簽署-128到127,其值從0到255

CREATE TABLE `example_table` (
    `example_col` tinyint(3) unsigned NOT NULL 
); 

第二個答案是「是」,則不能使用tinyint中的-129或256的值。檢查這個link以瞭解每個的上限和下限。

+0

謝謝。你的回答有幫助。我是。使用PHPMyAdmin。所以我將創建從屬性下拉選項的無符號。 –

0

TINYINT通過8位(1字節)表示。信息理論的基本知識表明,只有256個不同的值(256 = 2^8)可以用8位表示。

的 「TINYINT」 的8位是由MySQL以兩種方式中的一種解釋:

TINYINT UNSIGNED,其中256個值是解釋作爲0..255,或

TINYINT SIGNED(別名TINYINT,因爲SIGNED是默認值),其中的解釋的範圍爲-128..127。

當最高位是0時,8位在SIGNEDUNSIGNED之間代表0,127。但是當最高位是1時,8位或者代表負數或者更大的正數。

如果你願意,你可以解釋 256個值意爲「紅色」,「黃色」,「綠色」等,這是一個不同的數據類型時發生的事情:

ENUM('red', 'yellow', 'green') 

8位字節的另一個解釋爲您提供Ascii字符。見CHARVARCHARTEXT

由於TINYINT必須是SIGNEDUNSIGNED,你不能具有TINYINT柱,用這兩個值:-111和222(在不同的行)。如果您需要,請使用SMALLINT SIGNED。(這導致討論數字的16位表示。)

+0

謝謝瑞克。 –