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 言語文法百科事典 (必読)

推薦する

ソフトウェア 404 と 404 エラーとは何か、またそれらの違いは何ですか

まず、404 とソフト 404 とは何でしょうか? 404: 簡単に言えば、ユーザーが存在しないペー...

JavaScript関数の詳細な紹介

任意の数のステートメントを関数を通じてカプセル化することができ、いつでもどこでも呼び出して実行できま...

Windows はリモート デスクトップが長時間自動的に切断されるのを防ぎます

Windows リモート デスクトップを使用してサーバーに接続したことがある人なら、リモート デスク...

ffmpeg コマンドラインを使用してビデオを変換するためのサンプルコード

この記事の本文を始める前に、まず ffmpeg プログラムをインストールする必要があります (Lin...

MySQL における 8 つの一般的な SQL 使用例

序文MySQL は、2016 年もデータベースの人気において力強い成長傾向を維持し続けました。 My...

Ubuntu 20.04でAliソースを変更する方法

なお、この記事では、単に 20.04 ソースに変更する方法を説明するのではなく、20.04 に基づい...

HTML のテキストエリア タグ

<textarea></textarea> は、複数行を入力できるテキスト ...

Nginx と Lua を使用した JWT 検証の概要

目次序文Lua スクリプトnignx.conf の設定Dockerfileの設定序文データベースやそ...

Linux の crw、brw、lrw などのファイル属性は何ですか?

ファイルとは何ですか?すべてのファイルは実際には文字列のストリームですが、適切な解析方法を使用すると...

Vue ローカルコンポーネントデータ共有 Vue.observable() の使用

コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...

HTML マークアップ言語 - フォーム

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

一般的なCSS3アニメーションの実装方法

1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...

Dockerコンテナの起動失敗を解決する方法

質問: コンピュータを再起動した後、docker の mysql コンテナを再起動できません。原因が...

Ubuntu 20.04にSogou入力方式をインストールする詳細な手順

1. Fcitx入力フレームワークをインストールする関連する依存ライブラリとフレームワークは自動的に...

CSS ハート型読み込みアニメーションのソースコードの実装

さっそく、コードをお見せしましょう。コードは非常にシンプルなので、勉強すれば理解できるようになります...