MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ

MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ

1. テストデータ

テーブルtest_nullを作成(
    id int、
    名前varchar(20),
    中国語 int、
    数学int、
    英語 中級
) 文字セット=utf8;

test_nullに挿入 
価値観
(1,null,80,70,68),
(2,'张三',60,null,null),
(3,'李思',null,90,80),
(4、「王武」、90、60、75)、
(5、null、null、50、95);

結果は次のとおりです。

ここに画像の説明を挿入

2. ヌル値による不便

1) フィルタリングが異なり、is null または is not null のみを使用できます。

# null値は==または!=を使用して比較できません。# 次の両方とも間違っています。select *
test_nullから
name == null の場合;

*を選択
test_nullから
name != null; の場合

# null 値は通常、is null または is not null を使用して比較されます # 次の 2 つの使用法が正しい選択です *
test_nullから
name が null の場合;

*を選択
test_nullから
name が null ではない場合。

2) null 値が存在すると、+ - * / 演算が失敗します。

選択 	
	*,(中国語+数学+英語)をtest_nullの合計スコアとして取得します。

結果は次のとおりです。

ここに画像の説明を挿入

3) NULL値は集計関数に影響を与えず、集計関数はNULL値を直接無視します。

選択 
    中国語の合計得点、
    sum(math) 数学の合計点、
    sum(english) test_nullからの外国語の合計スコア

結果は次のとおりです。

ここに画像の説明を挿入

3. スペース、空の値、null をどのように判断すればよいですか?

1) スペース、空の値、nullの違い

これら 3 つの違いをわかりやすい比喩を使って説明してください。まず、スペースは理解しやすいです。空の文字列は、一定量のスペースを占有します。理解しにくいのは、実は空の値と null です。空の値は、何も入っていない真空状態のカップに相当し、null はカップの中に空気が入っていることを意味します。

MySQL では、 nullは不明であり、スペースを占有します。 NULL はインデックス、インデックス統計、および値をより複雑にし、オプティマイザの決定に影響を与えます。空の値('')スペースを占有しません。空の値の''の間にはスペースがないことに注意してください。 count()を使用して列内のレコード数をカウントする場合、 null値がある場合はシステムによって自動的に無視されますが、空の値はカウントされます。 null が使用されているかどうかを判断するには、 is nullis not null 。ただし、空文字が使用されているかどうかを判断するには= ,!=, <>を使用します。 timestampデータ型の場合、 null值を挿入すると、表示される値は現在のシステム時刻になります。 null値を挿入すると、 0000-00-00 00:00:00が表示されます。すでに作成されているテーブルの場合、共通列のnullnot nullに変更してもパフォーマンスはわずかにしか向上しないため、チューニング時に注意する必要はありません。

2) null 値が表示された場合はどうすればいいですか?

上記の分析により、テーブルに null 値がある場合、加算、減算、乗算、除算の演算が失敗することがすでにわかっています。では、これらの null 値をどのように処理すればよいのでしょうか?

最初の方法: is not null を直接使用してこれらの null 値を除外しますが、これにより欠損値のない他のフィールドも除外され、データが無駄になります。

2 番目の方法: これも私たちが推奨する方法です。関数を使用して欠損値を埋めます。

ifnull() および coalesce() 関数の使用:

選択 
    	id、
    	coalesce(name,'Anonymous') 名前、
    	coalesce(中国語,0) 中国語,
    	ifnull(数学,0) 数学、
    	ifnull(英語,0) 英語
test_null から;

結果は次のとおりです。

ここに画像の説明を挿入

以上がMySQLシリーズのNUll値に関する体験まとめと分析の詳しい内容です。MySQLのNUll値についてさらに詳しく知りたい方は、123WORDPRESS.COMの他の関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • MySQL プロセス制御 IF()、IFNULL()、NULLIF()、ISNULL() 関数
  • この記事ではMySQLのNULLについて説明します。
  • mysql IS NULL インデックスケースの説明を使用する
  • MySql の null 関数の使用の共有
  • MySQLでディスクにNULL値を保存する

<<:  SCSS スタイルのコードを 50% 削減する 14 の実践的な経験

>>:  HTML 文法百科事典_HTML 言語文法百科事典 (必読)

推薦する

MySQLをシンプルに学ぶ

序文データベースは常に私の弱点でした。自分の経験 (python+sqlalchemy) を組み合わ...

sqlite3 から mysql に移行するときに起こりうる問題のコレクション

簡単な説明適切な読者: モバイル開発sqlite3 データを mysql に移行する場合、多くの構文...

ウェブデザイン必携ハンドブック 216 ウェブセーフカラー

Web ページ上の色の表現は、さまざまな要因によって影響を受けます。Web ページで非常に美しい配色...

MYSQL パフォーマンス アナライザー EXPLAIN 使用例分析

この記事では、例を使用して MYSQL パフォーマンス アナライザー EXPLAIN の使用方法を説...

CentOS システムでの JDK のインストールと設定の概要

目次序文OpenJDKの確認とアンインストールダウンロードした圧縮パッケージを使用してJDKをインス...

Dockerでmysqlのルートパスワードを変更する方法

最初のステップはmysqlコンテナを作成することです docker exec -it コンテナID ...

VMware15.5 インストール Ubuntu20.04 グラフィック チュートリアル

1. インストール前の準備1. 公式ウェブサイトからUbuntu 20.04のイメージファイルを直接...

Linux カーネル デバイス ドライバー カーネル デバッグ テクニカル ノート集

/****************** * カーネルデバッグ技術 ****************...

HTML マルチヘッダーテーブルコード

1. マルチヘッダーテーブルコードコードをコピーコードは次のとおりです。 <!DOCTYPE ...

Web デザイン TabIndex 要素

TabIndex は、Tab キーを押して、定義された TabIndex 要素を順番に取得し、各要素...

Linux 構成で MySQL データベースへのリモート接続が失敗する問題の解決方法

今日は、Linux でリモート アクセス用に MySQL データベースを構成する方法について質問があ...

Centos7 で mysqldump を使用して MySQL データベースの毎日の自動バックアップを作成する

1. 要件:データベースのバックアップは、実稼働環境にとって特に重要です。データベースのバックアップ...

Reactにおけるコンポーネント通信の詳細な説明

目次親コンポーネントは子コンポーネントと通信します子コンポーネントは親コンポーネントと通信しますコン...

MySQL 5.7 のスロークエリログの時間がシステム時間より 8 時間遅れている理由の詳細な説明

遅いクエリをチェックすると、時間が正しくなく、システム時間とちょうど 8 時間異なっていることがわか...

HTMLセマンティクスと関連するフロントエンドフレームワークの詳細な分析

セマンティクスについて意味論は、記号やシンボルとそれらが表す意味との関係を研究する学問です。言語学で...