この記事ではMySQLのNULLについて説明します。

この記事ではMySQLのNULLについて説明します。

序文

このような問題に遭遇したことがあるかどうかはわかりません。MySQL データベースをクエリする場合、条件は status!=1 です。理論上は、条件を満たさない結果はすべてクエリされますが、奇妙なことに、NULL 値の結果はクエリできません。条件またはステータス IS NULL を追加する必要があります。この記事では、MySQL の NULL について説明します。

MySQL の 1 つの NULL

MySQL の場合、NULL は特別な値です。

NULL は未知で不確実であることを意味します。NULL はどの値とも等しくありません (NULL 自身を含む)

2 NULLが占める長さ

データベース内のNULLの長さ

mysql> length(NULL)、length('')、length('1') を選択します。
+--------------+------------+--------------+
| 長さ(NULL) | 長さ('') | 長さ('1') |
+--------------+------------+--------------+
| NULL | 0 | 1 |
+--------------+------------+--------------+

NULL 列では、値が NULL であるかどうかを記録するために行に追加のスペースが必要です。

空の値 '' の長さは 0 であり、スペースを占有しませんが、NULL の長さは NULL であり、追加のスペースが必要であることがわかります。そのため、一部の開発仕様では、データベース フィールドを Not NULL に設定し、デフォルト値 '' または 0 を設定することが推奨されています。

3 NULL値の比較

IS NULLは文字が空かどうかを判定し、空文字または0を表しません。

SQL92 標準では、!=NULL 条件は常に false を返し、集計演算は常に 0 を返すと規定されています。

もちろん、データベースで SET ANSI_NULLS OFF を使用して標準モードをオフにすることもできますが、通常はそうすることはお勧めしません。

したがって、数値が NULL と等しいかどうかを判断するには、IS NULL または IS NOT NULL のみを使用できます。

4 SQLはNULL値を処理する

MySQL には IFNULL(expr1, expr2) 関数が用意されており、これを使用するとデータ内の NULL を簡単に処理できます。

IFNULL は 2 つのパラメータを取ります。 最初の引数フィールドが NULL でない場合、最初のフィールドの値が返されます。 それ以外の場合、IFNULL 関数は 2 番目の引数の値 (デフォルト値) を返します。

t_userからIFNULL(status,0)を選択します。

5. クエリ条件におけるNULL値の影響

  • =、<、>などの演算子は使用できません。NULLに対する算術演算の結果はNULLです(したがって、ステータスがNULLの場合、status!=1はNULLをカウントしません)。
  • COUNT(expr)統計を使用する場合、このフィールドにNULL値を持つデータはカウントされません。

6 NULL値がインデックスに与える影響

最初に注意すべきことは、MySQL のデータ列に NULL が含まれていても、必ずしもインデックスが失敗するわけではないということです。

MySQLはNULLを含む列にインデックスを使用できる

NULL 値を持つフィールドに通常のインデックス、複合インデックス、全文インデックスなどの共通インデックスを使用すると、インデックスが無効になることはありません。ただし、空間インデックスを使用する場合、列は NOT NULL である必要があります。

7 NULL値がソートに与える影響

ORDER BY でソートする場合、NULL 値がある場合は NULL が最小になります。ASC 正順では、NULL 値が先頭になります。

正の順序で並べ替えるときに NULL 値を最後に置く必要がある場合は、IS NULL を使用する必要があります。

select * from t_user order by age is null, age; 
または、select * from t_user order by isnull(name), age; 
# select * from (select name, age, (age is null) as isnull from t_user) as foo order by isnull, age; と同等です。 

8 NULLと空の値の違い

NULL はフィールドに NULL 値を格納することを意味し、空の値はフィールドに空の文字 ('') を格納することを意味します。

1. 占有スペースの違い

mysql> length(NULL)、length('')、length('1') を選択します。
+--------------+------------+--------------+
| 長さ(NULL) | 長さ('') | 長さ('1') |
+--------------+------------+--------------+
| NULL | 0 | 1 |
+--------------+------------+--------------+
セット内の1行

要約: 上記から、null 値 ('') の長さは 0 であり、スペースを占有しないことがわかります。一方、NULL の長さは NULL であり、実際にはスペースを占有します。次の説明を参照してください。

NULL 列では、値が NULL であるかどうかを記録するために行に追加のスペースが必要です。

NULL 列では、その値が NULL であるかどうかを記録するために行に追加のスペースが必要です。

簡単に言うと、空の値は何も入っていない真空カップのようなもので、NULL 値は空気で満たされたカップのようなものです。見た目は同じですが、本質的には異なります。

要約する

これで、MySQL の NULL に関するこの記事は終了です。MySQL の NULL に関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL プロセス制御 IF()、IFNULL()、NULLIF()、ISNULL() 関数
  • MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ
  • mysql IS NULL インデックスケースの説明を使用する
  • MySql の null 関数の使用の共有
  • MySQLでディスクにNULL値を保存する

<<:  セマンティック HTML 構造の利点は何ですか?

>>:  アダプティブ Web デザインの手法 (モバイル フォンでの優れたアクセス エクスペリエンス)

推薦する

vue cli3は環境ごとにパッケージ化の手順を実装します

cli3 でビルドされた vue プロジェクトは、ゼロ構成ファイルとして知られています。パッケージ化...

MySQL 8.0.13 のインストールと設定方法のグラフィックチュートリアル (Win10 の場合)

MySQL 8.0.13 のインストールと設定方法を皆さんと共有したいと思います。お役に立てれば幸...

Linux 環境に nginx をインストールするチュートリアル

目次1. 必要な環境をインストールする //gccをインストールする yum で gcc-c++ を...

Nginx セッション損失問題の解決策

nginx をリバース プロキシ tomcat として使用する場合、セッション損失が発生する可能性が...

js ドラッグ アンド ドロップ テーブルでコンテンツ計算を実現する

この記事の例では、コンテンツの計算を実現するためのjsドラッグアンドドロップテーブルの具体的なコード...

HTML のブロックレベル要素と行レベル要素、特殊文字、ネスト規則

基本的な HTML Web ページ タグのネスト ルールを紹介する場合、最初に説明する必要があるのは...

Windows 10 で MySQL を完全に削除してアンインストールする方法

序文この記事では、Windows 10 システムで MySQL を完全に削除してアンインストールする...

LNMP を展開して HTTPS サービスを有効にする方法に関するチュートリアル

LNMP とは: Linux+Nginx+Mysql+(php-fpm、php-mysql)つまり、...

判定条件を使用してCSSファイルをインポートする

解決策 1: HEAD に次のコードを挿入するなど、HTML ドキュメントで条件付きインポートを使用...

Nginx リバース プロキシ学習例チュートリアル

目次1. リバースプロキシの準備1. LinuxシステムにTomcatをインストールする2. Tom...

Vueはechartsに基づいて3次元の縦棒グラフを実装します

3次元縦棒グラフは、正面、右側、上部の3つの部分で構成されています。描画するときは、正面をグラフィッ...

LinuxカーネルマクロContainer_Ofの詳細な説明

目次1. 構造体はメモリにどのように保存されますか? 2. container_ofマクロ3. 型4...

webpackのモバイル適応ソリューションの概要

目次レムフォルクスワーゲンサードパーティのUIフレームワークに適応する結論モバイル開発における最も一...

HTML リスト ボックス、テキスト フィールド、ファイル フィールドのサンプル コード

ドロップダウンボックス、テキストフィールド、ファイルフィールド 上半分はデモンストレーション効果、下...