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

推薦する

シンプルな HTML ビデオ プレーヤーを実装する方法

この記事では、シンプルな HTML ビデオ プレーヤーを実装する方法を紹介し、皆さんと共有します。詳...

Flask と Vue のフロントエンドとバックエンドを分離したプロジェクト展開のサンプル コード

以前、プロジェクトを開発しました。バックエンドのインターフェースを書くために Flask フレームワ...

Windows 10 システムに mysql-8.0.13 (zip インストール) をインストールする詳細なチュートリアル

インストール環境の説明•システムバージョン: windows10 •MySQL バージョン: mys...

Quill エディタでカスタム HTML レコードを挿入する詳細な例

もう2020年です。飢えた人間は単純なテキストでは満足できなくなり、さまざまなスタイルの派手なテキス...

MySQL: MySQL 関数

1. 組み込み関数1. 数学関数ランド()丸め(数値) ceil(数値)階数(数値)ランダム丸め切り...

VueはOpenLayersを使用してTiandi MapとAmapを読み込み

目次1. 世界地図1. VueにOpenLayersをインストールする2. アマップ1. 世界地図1...

ReactのuseEffectクロージャの落とし穴についての簡単な説明

問題コードuseEffectによって発生したクロージャの問題コードを見てみましょう 定数 btn =...

Dockerfileの指示と基本構造の説明

Dockerfile を使用すると、ユーザーはカスタム イメージを作成できます。基本構造Docker...

上部の固定divは半透明効果に設定できます

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

Zabbix パスワードをリセットする方法 (ワンステップ)

問題の説明長い間アカウントパスワードを入力して Zabbix にログインしていないため、管理者パスワ...

Vue+video.jsはビデオプレイリストを実装します

この記事では、ビデオプレイリストを実装するためのvue + video.jsの具体的なコードを参考ま...

ubuntu20.04 LTSにdockerをインストールする方法

ゼロ: 古いバージョンをアンインストールするDocker の古いバージョンは、docker、dock...

jsは水平および垂直スライダーを実現します

最近、練習プロジェクトをしていたときにスライダーを使う必要があったので、調べてみました。まず、水平ス...

Navicat Premiumを使用してMySQLデータベースにリモート接続する方法

新しい接続を作成する側がクライアントに相当し、接続される側がサーバーに相当します。手順は次のとおりで...

Vueリクエストインターセプターの設定方法の詳しい説明

以下の手順に従ってください1. request.jsコンテンツ: http リクエスト インターセプ...