NULL(ヌル)とは? 意味をわかりやすく解説【MySQL入門】

データベースを扱っていると出てくる「NULL(ヌル)」という値。

具体的に「NULL(ヌル)」の意味を解説していきます。

 

NULL(ヌル)とは?

NULL(「ヌル」や「ナル」と呼びます)は一言で言うと、「なにもない」ということを表しています。

 

データベースの場合は、フィールドの初期値が NULL となっています。

そもそも何も入っていないことを表すので、0(ゼロ)や ''(空文字)とも区別されます。数字でも文字列でもありません。

 

さらに具体的に理解するため、以下から実際にMySQLデータベースで動作を確認していきます。

 

MySQLでのNULLの動作

実際にデータベースに接続してテーブルに NULL を保存し、操作してみましょう。

 

テーブルにNULLを格納する

最初に準備として、以下のコマンドで「test_db」という名前のデータベースをあらかじめ作成し、その中に「test_table」という名前のテーブルを作成しておきます。

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT, name VARCHAR(100));
メモ

CREATE DATABASE 文の詳しい使い方はこちら

USE 文の詳しい使い方はこちら

CREATE TABLE 文の詳しい使い方はこちら

 

それでは「name」カラムに NULL を格納したデータを追加してみます。

フィールドの初期値は NULL なので、以下のように name カラムにデータを指定しないようにすれば、NULL が格納されます。

INSERT INTO test_table (id) values (1);

また、以下のように明示的に指定することもできます。

INSERT INTO test_table (id, name) values (1, NULL);
メモ

INSERT INTO 文の詳しい使い方はこちら

 

SELECT 文を使ってテーブルの内容を確認してみましょう。

SELECT * FROM test_table;
メモ

SELECT 文の詳しい使い方はこちら

 

以下のように「name」カラムに「NULL」と表示されていることが確認できます。

 

MySQLで NULL かどうかを確認する

MySQLで NULL かどうかを確認するときは IS NULL を使います。

 

以下は「name」カラムに NULL が格納されているデータを取得するコマンドです。

SELECT * FROM test_table WHERE name IS NULL;

 

コマンドを実行すると、以下のようにデータが取得できました。確かに「name」カラムに NULL が格納されていることが確認できました。

メモ

「IS NULL」の使い方は、以降の記事で解説しています。詳しくはこちら

 

NULL は 0(ゼロ)や ”(空文字)とは違う

今度は、以下のコマンドで「name」カラムに 0(ゼロ)を格納したデータを追加します。

INSERT INTO test_table (id, name) values (2, 0);

また、以下のコマンドで「name」カラムに ''(空文字)を格納したデータを追加します。

INSERT INTO test_table (id, name) values (3, '');

 

それでは以下のように、「name」カラムに NULL が格納されているデータを取得するコマンドを実行してみましょう。

SELECT * FROM test_table WHERE name IS NULL;

 

実行結果は以下のようになりました。

さきほど登録した id が 2 や 3 のデータは表示されていません。つまり、NULLは 0(ゼロ)や ''(空文字)と区別されるということがわかります。

 

NULL の使い道

NULL になっていることで、そのフィールドには何も格納していないということを表すことができます。

 

作成するアプリケーションの仕様によって、数値の場合は 0(ゼロ)、文字列の場合は ''(空文字)などを初期値とする場合もありますが、例えば年齢を表すフィールドに 0(ゼロ)が格納されているとき、それが初期値を表しているのか、「0歳」を表しているのか区別できなくなってしまいます。

NULLはデータ型に関係なく、そもそもデータが入力されていないということを示すことができるので、値が未入力のフィールドに使うと便利です。

 

まとめ

以上、データベースにおける「NULL(ヌル)」の意味でした!

 

ここまでの内容をまとめておきます。

  • 「NULL(ヌル)」は「なにもない」ということを表している。
  • データベースの場合は、フィールドの初期値が NULL となっている。
  • NULLは 0(ゼロ)や ''(空文字)と区別される。
  • データ型に関係なく、値が未入力のフィールドなどに使える。

 

MySQL入門メニュー