Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLのboolean型についてまとめています。

以下のサンプルSQLは、MySQL8.0.18を前提としています。

データ型booleanを使ったサンプルSQL

Oracle、MySQL、PostgreSQLではTrue/Falseを扱うデータ型Booleanが使用可能です。SQL Serverでは、同等のbit型を使うことができます。bit型は1と0を取り扱い可能です。

まずは、テスト用のテーブルboolean_testを作成しましょう。

mysql> create table boolean_test ( id varchar(4), value boolean );
Query OK, 0 rows affected (0.06 sec)

mysql> desc boolean_test;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | varchar(4) | YES  |     | NULL    |       |
| value | tinyint(1) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+

mysql> show create table boolean_test;
+--------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Table        | Create Table                                                                                                                         |
+--------------+--------------------------------------------------------------------------------------------------------------------------------------+
| boolean_test | CREATE TABLE `boolean_test` (
  `id` varchar(4) DEFAULT NULL,
  `value` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=sjis |
+--------------+--------------------------------------------------------------------------------------------------------------------------------------+mysql> insert boolean_test (id, value) values ('0001',(true));

テーブルboolean_testは、varchar(4)のidと、boolean型のvalueの2カラムで構成しています。MySQLでは、booleanはtinyint型に置き換えられます。tinyintは0と1以外の値を格納することが可能なので、厳密なboolean型を扱うには挿入・更新時に値チェックが必要になります。Oracle、PostgreSQLではboolean型が提供されています。

テーブルboolean_testに以下のデータを挿入します。

mysql> insert boolean_test (id, value) values ('0001',1); 
Query OK, 1 row affected (0.00 sec)

mysql> insert boolean_test (id, value) values ('0002',0);
Query OK, 1 row affected (0.00 sec)

mysql> insert boolean_test (id, value) values ('0003',null);
Query OK, 1 row affected (0.01 sec)

MySQLでは、(true)は1、(false)は0として扱われます。テーブルに格納される値は以下のようになります。

mysql> select * from boolean_test;
+------+-------+
| id   | value |
+------+-------+
| 0001 |     1 |
| 0002 |     0 |
| 0003 |  NULL |
+------+-------+

where条件で、is true、is false、is null、is not trueを指定したときの結果は以下のようになります。

mysql> select * from boolean_test where value is true;
+------+-------+
| id   | value |
+------+-------+
| 0001 |     1 |
+------+-------+

mysql> select * from boolean_test where value is false;
+------+-------+
| id   | value |
+------+-------+
| 0002 |     0 |
+------+-------+

mysql> select * from boolean_test where value is null;
+------+-------+
| id   | value |
+------+-------+
| 0003 |  NULL |
+------+-------+

mysql> select * from boolean_test where value is not true;
+------+-------+
| id   | value |
+------+-------+
| 0002 |     0 |
| 0003 |  NULL |
+------+-------+

insert時の値には(true)と(false)が使えます。以下のSQLは、次の2つのデータを挿入したときの例です。

mysql> insert boolean_test (id, value) values ('0004',(true));
Query OK, 1 row affected (0.01 sec)

mysql> insert boolean_test (id, value) values ('0005',(false));
Query OK, 1 row affected (0.03 sec)

mysql> select * from boolean_test;
+------+-------+
| id   | value |
+------+-------+
| 0001 |     1 |
| 0002 |     0 |
| 0003 |  NULL |
| 0004 |     1 |
| 0005 |     0 |
+------+-------+

データベースによっては、on、off、t、fなどが使えます。

まとめ

ポテパンダの一言メモ
  • boolean型は真(1)、偽(0)、NULLの3値を取ることができる
  • データーベースによってboolean型の実装には違いがある。MySQLでは実体はtinyintとなる。
  • where条件で真以外を指定するには、is not trueなどを指定し、偽とNULLを含める必要あり
  • データベースによって、真偽値はtrue、falseなどが使える

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。