2011-07-07 39 views
8

我讀過,在MySQL中布爾類型是(1),因此我應該使用TINYINTBOOL和tinyint(1)...未簽名?

我的問題TINYINT的別名如下: 我是否需要聲明它無符號,我的意思是,它是必要嗎?

purchased tinyint(1) unsigned not null DEFAULT 0, 

or 

purchased tinyint(1) not null DEFAULT 0, 
+4

使用BOOL有什麼問題嗎? –

+2

_「因此我應該使用tinyint」_ - 爲什麼會跟着? BOOL非常好,並且(在我看來)更能表達你的意圖。 'TINYINT(1)'可能意味着「從0到9之間的任何東西」; 'BOOL'具體指「0或1」(儘管我想你可能會誤解你的意圖:-))。 –

回答

10

沒必要;讓它簽署。事實上,無論如何它無關緊要 - 無論其符號如何,0和1都在TINYINT的有效值範圍內。

但是,嚴肅地說,只是聲明一個BOOL,它很清楚地表明它是一個真或假的價值。

+1

我不知道我可以在mysql中使用bool,雖然這個bool在mysql中不被支持....從來不遲到學習... – Marco

+3

'BOOL'是'TINYINT(1)'的同義詞。 – MichaelRushton

+0

有些版本可能不支持BOOL,也適合使用tinyint,因爲如果您需要在不同的SQL中使用查詢,則轉換起來會更容易! – JDuarteDJ

3

將它聲明爲無符號是不必要的,特別是如果您使用它來存儲布爾值。