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 で binlog を使用する際のフォーマットの選択方法

目次1. binlogの3つのモード1.ステートメントレベルモード2. 行レベルモード3. 混合モー...

Mysql InnoDBとMyISAMの違いの分析

MySQL は、myisam、innodb、memory、archive、example など、多く...

ゲーム開発におけるサウンド処理にCocosCreatorを使用する方法

目次1. Cocos Creatorでのオーディオ再生の基本1. 基本2. 一般的な方法2. Coc...

WeChatアプレットが計算機機能を実装

この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...

autoconfを使用してMakefileを生成し、プロジェクトをコンパイルする手順

序文Linux では、コンパイルとリンクには Makefile を使用する必要がありますが、適切な ...

Alibaba CloudにMySQLをインストールする方法の詳細な説明

軽量のオープンソース データベースである MySQL は、エンタープライズ レベルのアプリケーション...

CentOS IP接続ネットワーク実装プロセス図

1. システムにログインし、ディレクトリに入ります: cd /etc/sysconfig/netwo...

Docker による Oracle 11g イメージ構成のプルに関する詳細なチュートリアル

さっそくAlibaba の oracle11g イメージをプルして構成する docker の記録を開...

MySQL RouterはMySQLの読み取りと書き込みの分離を実装します

目次1. はじめに2. MySQLルーターを構成する2.1 MySQLルーターのインストール2.2 ...

Windows10システムにスーパーセットをインストールする手順

Superset は、エレガントなインターフェースとデータ テーブルに基づく動的なデータ生成を主な機...

Vue プロジェクトにインターフェース リスニング マスクを追加する方法

1. 事業背景マスク レイヤーを使用してユーザーの異常な操作を遮断する方法は、フロントエンドでよく使...

CSS における px、em、rem、pt の特徴、違い、変換について詳しく説明します。

コンセプト紹介: 1. px (ピクセル):仮想的な長さの単位で、コンピュータ システムのデジタル画...

Centos7 での mysql 8.0.15 のインストールと設定

この記事では、参考までにMySQL 8.0.15のインストールと設定のグラフィックチュートリアルを紹...

CSS3+HTML5+JSでブロックの縮小・拡大アニメーション効果を実現

最近、あるプロジェクトに取り組んでいたとき、自分のプロジェクトでは CSS3 のアニメーション技術を...

mysql5.7 の新しい json フィールド タイプの使用例の分析

この記事では、MySQL 5.7 で追加された json フィールド タイプの使用方法を例を使って説...