MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでブール型(BOOLEAN)フィールドを追加する方法を徹底解説

MySQLには厳密な意味での「ブール型」は存在せず、BOOLBOOLEANとして定義した場合でも、内部的にはすべてTINYINT(1)として扱われます。つまり、tinyint(1)boolbooleanの3つは完全なシノニム(同義語)です。

MySQLにおける真偽値の扱い

MySQLでは、0が偽(false)0以外の数値が真(true)として解釈されます。PHPと同様に、0以外の任意の数値もtrueとして扱われる点に注意しましょう。実務上は、可読性を高めるためにtrue/falseリテラルを使うか、規約として0と1のみを使用するのが一般的です。

BOOL型カラムを持つテーブルを作成する

それでは、実際にbool型のカラムを持つテーブルを作成してみましょう。以下のクエリを実行します。

mysql> create table AddBoolDemo
-> (
-> isToggle bool
-> );
Query OK, 0 rows affected (1.24 sec)

DDLを確認して内部構造を見る

テーブルの定義(DDL)を確認するには、次のクエリを使用します。

SHOW CREATE TABLE yourTableName;

作成したテーブル「AddBoolDemo」に対して実行すると、boolが内部的にtinyint(1)へ変換されていることが確認できます。

mysql> show create table AddBoolDemo\G

実行結果は以下の通りです。

*************************** 1. row ***************************
Table: AddBoolDemo
Create Table: CREATE TABLE `addbooldemo` (
`isToggle` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

このように、boolで定義したにもかかわらず、DDL上ではtinyint(1)として保存されていることが分かります。

true / false / 1 / 0 のデータを挿入する

INSERTコマンドを使って、truefalse10の各リテラルを挿入してみます。

mysql> insert into AddBoolDemo values(true);
Query OK, 1 row affected (0.19 sec)

mysql> insert into AddBoolDemo values(false);
Query OK, 1 row affected (0.19 sec)

mysql> insert into AddBoolDemo values(1);
Query OK, 1 row affected (0.10 sec)

mysql> insert into AddBoolDemo values(0);
Query OK, 1 row affected (0.18 sec)

挿入結果をSELECT文で確認する

SELECT文ですべてのレコードを表示し、格納された値を確認します。

mysql> select *from AddBoolDemo;

実行結果は以下の通りです。

+----------+
| isToggle |
+----------+
| 1        |
| 0        |
| 1        |
| 0        |
+----------+
4 rows in set (0.00 sec)

まとめ

MySQLでブール値を扱いたい場合は、boolまたはbooleanを指定すればよく、これらは自動的にtinyint(1)として処理されます。格納される値は結局のところ0と1であるため、アプリケーション側(PHPなど)では0をfalse、0以外をtrueとして扱うロジックを実装しておくと安心です。

  1. MySQLでテーブルのタイムスタンプ(TIMESTAMP)フィールドを更新する方法

    MySQLテーブルのタイムスタンプフィールドを更新する手順MySQLでは、UPDATE文とNOW()関数を組み合わせることで、TIMESTAMP型のフィールドを簡単に現在の日時へ更新できます。ここでは、具体的なサンプルを使って手順を解説します。1. テーブルを作成するまず、タイムスタンプ型のカラムを持つテーブルを作成しましょう。mysql> create table DemoTable -> ( -> PunchOut timestamp, -> PunchStatus tinyint(1) -> ); Query OK, 0 ro

  2. MySQLの既存テーブルに現在の日付を追加・更新する方法

    既存のテーブルを更新するには UPDATE 文を使用します。そして、現在の日付を設定するには CURDATE() 関数を使います。UPDATE テーブル名 SET カラム名 = CURDATE();サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。mysql> create table DemoTable-> (-> DueDate datetime-> );Query OK, 0 rows affected (0.58 sec)データの挿入次に、INSERT コマンドを使ってテーブルにいくつかのレコードを挿入します。mysql> insert i