2011-07-07 6 views
8

私はMySQLでbool型は、(1)、したがって、私は私の質問は以下の通りですtinyint型BOOLと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をサポートしていない可能性があります。別のSQLでクエリを使用する必要がある場合は、変換が簡単ですのでtinyintを使用するとよいでしょう。 – JDuarteDJ

3

特に、ブール値を格納するために使用している場合は、それを符号なしと宣言する必要はありません。

関連する問題