MySQL BOOLとBOOLEANカラムのデータ型の違いは何ですか?


87

MySQLバージョン5.1.49-1ubuntu8.1を使用しています。それは私が2つの異なるデータ型の列を定義することができます:BOOLBOOLEAN。2つのタイプの違いは何ですか?

回答:



25

他のコメントで確立されているように、これらは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バイトを使用し、バイナリデータのみを格納します。


2
これは実際には質問の答えにはなりません。違いは何だBOOLとはBOOLEAN
12

7
以前の投稿では、両方がTINYINT(1)の同義語であることをすでに確立していました。理想的には、次の質問は「なぜ、なぜデータ型を区別したのか」です。
6

3
@Sixthfore Bit: Uses 8 bytes and stores only binary data.は誤った情報です。テーブルにビット列を追加すると、単一ビットだけでなく、各レコードのバイト全体を占有します。2番目のビット列を追加すると、同じバイトに格納されます。9番目のビット列には、2バイト目のストレージが必要です。
Kolyunya

4

私が気づいたことの1つ-MySqlで列としてBOOLとして定義されている場合、Spring RooはJavaコードを正しく生成して値をブール値に非整列化します。そのため、BOOLを指定すると、たとえカラムの使用目的。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.