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

MySQLで0、1、NULL値を格納するのに最適なデータ型は?

MySQLで0、1、NULLという3種類の値を格納したい場合、最適なデータ型は TINYINT(1) UNSIGNED NULL です。TINYINTはわずか1バイトで済むため省スペースであり、フラグや真偽値のような扱いにも向いています。

カラム定義の構文

yourColumnName TINYINT(1) UNSIGNED NULL;

UNSIGNEDを指定することで負の値を排除し、NULLを許容することで「未設定」の状態も表現できます。

テーブルを作成して動作を確認する

それでは、実際にテーブルを作成して構文を確認してみましょう。テーブル作成のクエリは以下の通りです。

mysql> create table StoreValue0and1orNULLDemo
   -> (
   -> isDigit TINYINT(1) UNSIGNED NULL
   -> );
Query OK, 0 rows affected (0.63 sec)

0、1、NULLのレコードを挿入する

次に、INSERTコマンドを使ってテーブルに0、1、NULLの3つのレコードを挿入します。

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

SELECT文で登録内容を確認する

SELECT文を実行して、テーブル内のすべてのレコードを表示します。

mysql> select *from StoreValue0and1orNULLDemo;

実行結果は以下の通りです。0、1、NULLが正しく格納されていることが確認できます。

+---------+
| isDigit |
+---------+
|       0 |
|       1 |
|    NULL |
+---------+
3 rows in set (0.00 sec)

まとめ

0と1、さらにNULLを扱いたい場合は、TINYINT(1) UNSIGNED NULLを使うのがベストプラクティスです。ストレージを最小限に抑えつつ、真偽値に加えて「値なし」の状態まで柔軟に表現できるため、多くの場面で活用できます。

  1. MySQLで列エイリアスを特定のデータ型として扱う方法(CASTとCASEの活用)

    MySQLでは、符号なし整数型(UNSIGNED)の列をそのままSELECTすると、負の値を扱えないという制約があります。そこで、CASEステートメントとCAST関数を組み合わせることで、列エイリアスの結果を特定のデータ型(ここではSIGNED=符号付き整数)に強制的に変換する方法を紹介します。1. サンプルテーブルの作成まず、テスト用のテーブルを作成します。「Value」列はUNSIGNED型、「Status」列はTINYINT(1)型とします。mysql> create table DemoTable1505    -> ( &

  2. MySQLでNULL値を1として表示・更新する方法

    MySQLでは、テーブル内のNULL値を別の値(たとえば「1」)に置き換えて扱いたい場面があります。この記事では、IFNULL関数とUPDATE文を組み合わせて、NULL値を1に変換する具体的な手順をサンプルコード付きで解説します。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1963 ( Counter int ); Query OK, 0 rows affected (0.00 sec) 2. レコードを挿入する INSERT文を使って、NULLを含む複数のレコードを