MySQLの空の値とnull値の違いを知っていますか?

MySQLの空の値とnull値の違いを知っていますか?

序文

最近、友人がSQLを書くときにnull値を判定する方法が間違っていて、プログラム内のデータにエラーが発生していることに気付きました。今後、誰もがnull値を正しく判定できるように、ここで整理します。以下に例を挙げて説明します。

テーブルを作成する

テーブルテストを作成します(colA varchar(10) not null、colB varchar(10) null);

テストテーブルにデータを挿入する

colAがnullのデータを挿入する

テスト値に挿入します(null、1);

colA 列は null にできないため、この時点でエラーが報告されます。

colBがnullのところにデータを挿入する

テスト値に挿入(1、null);

挿入は成功したことが確認されました。

空のデータをすべて挿入

テスト値に挿入します(''''); 

colAが空の場所にデータを挿入する

テスト値に挿入(''、null); 

colA 列には null 値を正常に挿入できることがわかりますが、colB 列には null 値と NULL 値の両方を挿入できます。
要約すると、NOT NULL として定義されたフィールドには空の値のみを挿入でき、NULL 値は挿入できませんが、NULL フィールドには空の値または NULL 値を挿入できます。

空でないデータを挿入する

テスト値(1,2)に挿入します。

クエリを開始




「is not null」は null 値を持つ列のみをフィルタリングしますが、「<>」は空の値と null 値の両方をフィルタリングするため、実際の状況に応じてフィルタリング方法を選択する必要があります。
また、null 値を判断するには、= や <> ではなく、is null または is not null のみを使用できます。

特別な注意

1. count() を実行して列内のレコード数をカウントするときに NULL 値が使用されている場合、システムによって自動的に無視されますが、NULL 値はカウントされます。

2. NULL を判断するには、IS NULL または is not null を使用します。SQL ステートメント関数で ifnull() 関数を使用して処理できます。空文字を判断するには、= または <> を使用します。

3. MySQL の特別な考慮事項: タイムスタンプ データ型の場合、このデータ型の列に NULL 値が挿入されると、表示される値は現在のシステム時刻になります。 null値を挿入すると、「0000-00-00 00:00:00」が表示されます。

4. null 値の判定に is null を使用するか = を使用するかは、実際の業務に応じて使い分ける必要があります。

5. ORDER BYを使用する場合、NULL値が最初に提示されます。 DESC を使用して降順で並べ替えると、NULL 値は最後に表示されます。 GROUP BY を使用すると、すべての NULL 値は等しいとみなされるため、1 行のみが表示されます。

要約する

これで、MySQL の空の値と null 値の違いに関するこの記事は終了です。MySQL の空の値と null 値の違いについてさらに詳しく知りたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL で null 値と空文字 ('''') を区別する
  • MySQL における null 値と空文字 '' の具体的な使用法

<<:  HTML テーブルタグチュートリアル (46): テーブルフッタータグ

>>:  VMware15/16 VMwareのロックを解除してMacOSをインストールする詳細な手順

推薦する

JQuery を放棄すべきでしょうか?

目次序文jQuery 以外の場合は何を使うのでしょうか? DOMとイベントAJAX リクエスト要約す...

MySQL で重複しない携帯電話番号テーブルをバッチ生成する方法のサンプルコード

序文多くの MySQL テスト シナリオでは、テスト用に一部のテスト データを手動で生成する必要があ...

MySQL インデックスの一般的な問題の概要

Q1: データベースにはどのようなインデックスがありますか?メリットとデメリットは何ですか? 1. ...

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

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

Ubuntu 20.04 ファイアウォール設定の簡単なチュートリアル (初心者)

序文ますます便利になった今日のインターネット社会では、さまざまなインターネット ランサムウェア ウイ...

Vue の一般的な問題と解決策の概要 (推奨)

Vue に限定されず、他の種類の SPA プロジェクトにも当てはまる問題がいくつかあります。 1....

CSS3 と JavaScript を使用して Web カラー ピッカーのサンプル コードを開発する

この例の Web カラー ピッカー機能は、ページ効果を実現するために CSS3 を使用します。つまり...

Centos8 で Docker を使用して Django プロジェクトをデプロイする詳細なチュートリアル

導入この記事では、django + uwsgi + nginx デプロイメントを使用して、Docke...

MySQL データのバックアップと復元のサンプル コード

1. データのバックアップ1. mysqldumpコマンドを使用してバックアップするmysqldum...

Vue ページ内の公開マルチタイプ添付画像アップロード領域と適用可能な折りたたみパネル (サンプルコード)

フロントエンド プロジェクトでは、添付ファイルのアップロードは非常に一般的な機能であり、ほぼすべての...

Apache Web サーバーを使用して 2 つ以上のサイトを構成する方法

人気があり強力な Apache Web サーバーで 2 つ以上のサイトをホストする方法。前回の記事で...

CSS3 のフィルタプロパティの使用に関する詳細な説明

最近、イントラネットポータルを修正していたときに、フィルターを使用する必要がある箇所に遭遇しました。...

Vue3 の ref と toRef の違いを簡単に分析します

1. refがコピーされ、ビューが更新されますrefを使用してオブジェクトのプロパティ値をレスポンシ...

Vueのドラッグ可能なコンポーネントであるVue Smooth DnDの使用方法の詳細な説明

目次紹介とデモAPI: コンテナ財産ライフサイクルコールバックイベントAPI: ドラッグ可能実際の戦...