2011-07-07 37 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

将它声明为无符号是不必要的,特别是如果您使用它来存储布尔值。