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は自動的に値を割り当てます。