ゆる~く覚えるSQL入門:カラムに何も保存されていないデータを検索する【IS NULL】

  • 2020年9月21日
  • 2020年9月21日
  • IT, SQL
  • 0view
IT

今回の記事ではカラムになにも保存されていないデータを検索するときに使うIS NULLと保存されていないデータ以外を検索するときに使うIS NOT NULLを学習します。

よくある間違いも紹介していますので、間違いないように注意しましょう。

SQL文入門:パン屋さんのmenuテーブルで考えてみよう

テーブル名:menu

id name price category
1 メロンパン 200 菓子パン
2 カレーパン 300 総菜パン
3 カツサンド 400 総菜パン
4 デニッシュ 300 菓子パン
5 バターロール 200 総菜パン
6 食パンプレミアム 500 総菜パン
7 期間限定マロンクリームコロネ 菓子パン

今回も簡単な題材として、パン屋さんのmenuテーブルを例にSQL文を学習してきます。

いつもと違うのは今回のmenuテーブルでは新商品である期間限定マロンクリームコロネが新たに追加され、価格がまだ未定のため登録していない状態です。

そもそもNULLとは

データベースを見て何もデータが保存されていないことをNULL(ヌル)といいます。

上のmenuテーブルだと、期間限定マロンクリームコロネの価格がまだ未定のため何も登録されていません。

この状態をNULLといいます。

【IS NULL】あるカラムがNULLのデータのみ検索する

SQL文を書いていて、あるカラムがNULLのデータを検索したいときはIS NULLを使います。

SQL文は以下のように書きます。

select カラム名
from テーブル名
where カラム名 is null
;

実際にパン屋さんのmenuテーブルのpriceカラムがNULLのデータを検索してみましょう。

select *
from menu
where price is null
;

↓↓↓↓実行してみると

・実行結果

id name price category
7 期間限定マロンクリームコロネ 菓子パン

priceがNULLの期間限定マリンクリームコロネのレコードのみ検索できました。

【IS NOT NULL】あるカラムがNULL以外のデータのみを検索する

今度は逆にあるカラムがNULL以外のデータを検索するときはIS NOT NULLを使います。

NOT演算子に関しては↓の記事で解説していますので、よく分からない方は読んでみてください。

NULL以外のデータを検索するSQL文は以下のように書きます。

select カラム名
from テーブル名
where カラム名 is not null
;

実際にパン屋さんのmenuテーブルのpriceカラムがNULL以外のデータを検索してみましょう。

select *
from menu
where price is not null
;

↓↓↓↓実行してみると

・実行結果

id name price category
1 メロンパン 200 菓子パン
2 カレーパン 300 総菜パン
3 カツサンド 400 総菜パン
4 デニッシュ 300 菓子パン
5 バターロール 200 総菜パン
6 食パンプレミアム 500 総菜パン

menuテーブルのpriceカラムがNULL以外のデータを検索できました。

※補足:カラム名 = NULL / NOT カラム名 = NULLは使えないので注意!

あるカラムがNULLのものを検索したり、逆にNULL以外のデータを検索したいとき以下のようにSQL文を書かないように注意しましょう。

  • カラム名 = NULLは使えない
  • NOT カラム名 = NULLも使えない

・NG例①

select カラム名
from テーブル名
where カラム名 = null  ←間違いなので注意!
;

・NG例②

select カラム名
from テーブル名
where not カラム名 = null  ←間違いなので注意!
;

まとめ

今回の記事をまとめると

  • データベースを見て何もデータが保存されていないことをNULL(ヌル)と言う
  • あるカラムがNULLのデータのみ検索する場合はIS NULLを使う
  • あるカラムがNULL以外のデータのみ検索する場合はIS NOT NULLを使う
  • カラム名 = NULL / NOT カラム名 = NULLは間違いなので注意
最新情報をチェックしよう!