データベースを扱っていると出てくる「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));
それでは「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
(ゼロ)や''
(空文字)と区別される。 - データ型に関係なく、値が未入力のフィールドなどに使える。