MySQLバージョン5.1.49-1ubuntu8.1を使用しています。それは私が2つの異なるデータ型の列を定義することができます:BOOL
とBOOLEAN
。2つのタイプの違いは何ですか?
回答:
他のコメントで確立されているように、これらはTINYINT(1)の同義語です。
* では、なぜbool、boolean、tiny * int(1)を区別する必要があるのでしょうか?
主に意味論。
BoolとBoolean:MySQLはデフォルトでこれらをtinyint型に変換します。この記事の執筆時点で作成されたMySQLステートメントによれば、「将来のMySQLリリースでは、標準のSQLに従って完全なブール型の処理を実装する予定です」。
0 =偽1 =真
TINYINT:1バイトを占有します。-128〜+127の範囲。または、0〜256。
この比較でよく取り上げられるのは、MySQL 5.0.3以降-ビット:8バイトを使用し、バイナリデータのみを格納します。
BOOL
とはBOOLEAN
?
Bit: Uses 8 bytes and stores only binary data.
は誤った情報です。テーブルにビット列を追加すると、単一ビットだけでなく、各レコードのバイト全体を占有します。2番目のビット列を追加すると、同じバイトに格納されます。9番目のビット列には、2バイト目のストレージが必要です。
MySQLドキュメントの数値型の概要を確認します。
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html