MariaDB-Null値

NULL値を操作するときは、それらが不明な値であることを忘れないでください。それらは、有効な値である空の文字列またはゼロではありません。テーブルの作成では、列の指定により、null値を受け入れるか拒否するかを設定できます。NULLまたはNOTNULL句を使用するだけです。これは、ID番号などのレコード情報が欠落している場合に適用されます。

ユーザー定義変数は、明示的に割り当てられるまで値がNULLになります。保存されたルーチンパラメータとローカル変数により、NULLの値を設定できます。ローカル変数にデフォルト値がない場合、その値はNULLになります。

NULLは大文字と小文字を区別せず、次のエイリアスがあります-

  • UNKNOWN(ブール値)
  • \N

NULL演算子

NULL値を使用したすべての比較は、trueまたはfalseではなくNULLを返すため、標準の比較演算子をNULL(=、>、> =、<=、<、または!=など)で使用することはできません。NULLとの比較、またはNULLを含む可能性のある比較では、「<=>」(NULL-SAFE)演算子を使用する必要があります。

他の利用可能な演算子は-

  • ISNULL-NULL値をテストします。

  • IS NOTNULL-NULL値がないことを確認します。

  • ISNULL-NULL値の検出時に1の値を返し、それがない場合は0を返します。

  • COALESCE-リストの最初の非NULL値を返すか、リストがない場合はNULL値を返します。

NULL値の並べ替え

ソート操作では、NULL値の値が最も小さいため、DESCの順序では最下部にNULL値が表示されます。MariaDBでは、NULL値に高い値を設定できます。

以下に示すように、これを行うには2つの方法があります-

SELECT column1 FROM product_tbl ORDER BY ISNULL(column1), column1;

逆-

SELECT column1 FROM product_tbl ORDER BY IF(column1 IS NULL, 0, 1), column1 DESC;

NULL関数

通常、関数は、パラメーターがNULLの場合にNULLを出力します。ただし、NULL値を管理するために特別に設計された関数があります。彼らは-

  • IFNULL()−最初の式がNULLでない場合は、それを返します。NULLと評価されると、2番目の式を返します。

  • NULLIF() −比較された式が等しい場合はNULLを返し、等しくない場合は最初の式を返します。

SUMやAVGなどの関数はNULL値を無視します。

NULL値の挿入

NOT NULLと宣言された列にNULL値を挿入すると、エラーが発生します。デフォルトのSQLモードでは、NOTNULL列は代わりにデータ型に基づいてデフォルト値を挿入します。

フィールドがTIMESTAMP、AUTO_INCREMENT、または仮想列の場合、MariaDBはNULL値を異なる方法で管理します。AUTO_INCREMENT列に挿入すると、シーケンス内の次の番号がその場所に挿入されます。TIMESTAMPフィールドでは、MariaDBが代わりに現在のタイムスタンプを割り当てます。このチュートリアルの後半で説明するトピックである仮想列では、デフォルト値が割り当てられます。

UNIQUEインデックスは多くのNULL値を保持できますが、主キーをNULLにすることはできません。

NULL値とAlterコマンド

ALTERコマンドを使用して列を変更すると、NULLが指定されていない場合、MariaDBは自動的に値を割り当てます。