0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQLにおけるNULLについて

Last updated at Posted at 2025-02-10

SQLにおけるNULLの危険性について

こんにちは、jjj0331です。、
今回はSQLのNULLに関する特性や。デメリットについてご紹介したいと思います。
本記事を通してNULLの危険性を理解し、NULLの撲滅に共感して頂けると幸いです。

NULLを使う目的

SQLでNULLが挿入される目的は
データを挿入しなければならないが、一部の列の値がまだ決まっていない場合に「無」「不明」の意味を込めてNULLを挿入します。
SQLがNULLを持ち込んだことにより、3値論理を持ち込まざるをえなくなり大きな混乱を生み出しました。

3値論理とは、真理値が「true」「false」の2つの値だけではなく、「unknown」という第三の値を持つ理論体系を指します。一般的なプログラムが2値論理を採用していることからSQLの3値論理が多くのプログラマーの混乱をまねくことになりました。

NULLを許容したことによるデメリット

SQLでは仕方なくNULLを許容することはありますが、
極力NULLの使用は避けたほうが良いです。
それは、NULLのデメリットが大きすぎるためです。

  • 条件式を書く場合に、3値論理を考慮する必要がある
  • 「is NULL」「 is not NULL」と書かないとNULLを判定できない
  • 四則演算や関数の引数にNULLがあると期待値が得られない
  • DBMSによりNULLの扱い方が異なる
  • Oracleの場合、is NULLを使用するとインデックスが使用されない

NULLを撲滅するために

  • 値が決まっていない場合を想定しあらかじめ未定コードを用意しておく
  • 数字列の場合は0で代用 ※0と不明を分けなくてもよい場合
  • 列にNOT NULL制約を宣言する

それでもNULLは撲滅できない

すべてのテーブルにNOT NULL制約を宣言したとしても、NULLは発生します。
外部結合やCUBEを使用することで簡単にNULLは入り込んできます。
というわけで、
SQLを使う上で、NULLは避けられないので、常に気を付けましょう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?