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をインストールする詳細な手順

推薦する

テーブルレイアウトの長所と短所、そして推奨されない理由

テーブルの欠点1. テーブルは他の HTML タグよりも多くのバイトを占有します。 (ダウンロード時...

MySQL ファジークエリステートメントコレクション

SQL ファジークエリステートメント一般的なファジーステートメントの構文は次のとおりです。 SELE...

CSS を使用して半透明の背景と不透明なテキストを実現する例

この記事では、CSS を使用して半透明の背景と不透明なテキストの効果を実現する方法の例を紹介します。...

ストアド プロシージャでエラー状態をトリガーする mysql ストアド プロシージャの分析例 (SIGNAL および RESIGNAL ステートメント)

この記事では、例を使用して、MySQL がストアド プロシージャで引き起こすエラー状態 (SIGNA...

MySQL 8.0 アトミック DDL 構文の詳細な説明

目次01 アトミックDDLの紹介02 一部のDDL操作の実行動作の変更03 DDL 操作のログを表示...

Linux での Apache サービスの展開と構成

目次1 Apacheの役割2 Apacheのインストール3. Apacheを有効にする4 Apach...

mysql はインデックスを無効にしますか?

mysql の IN はインデックスを無効にしますか?しませんよ! 結果をご覧ください: mysq...

携帯電話に GreasyFork js スクリプトをインストールするチュートリアル

目次序文1. Iceraven ブラウザ (Firefox) (Android) 2. (アンドロイ...

Nginx 502 Bad Gateway エラーの原因と解決策

Nginx 502 Bad Gateway エラーに何度か遭遇しました。ここでメモしておこうと思いま...

Vue のスロットリング関数使用時の落とし穴ガイド

序文一般的なビジネス シナリオでは、検索ボックスへの入力が完了した後、検索データを取得するために関連...

Dockerの基本的なネットワーク構成の詳細な説明

外部アクセスポートをランダムにマップする -P フラグを使用すると、Docker は 49000 か...

Docker を使用した RabbitMQ 環境のデプロイの詳細な紹介

前提条件: Dockerはすでにインストールされています1. 画像を見つける(方法は2つあります) ...

クリックイメージ反転効果を実現するJavaScript

最近、顔コレクションに関するプロジェクトに取り組んでいましたが、フロントエンドモジュールを書いている...

CSS エクスペリエンスを充実させる 5 つの便利な CSS セレクターを紹介します

Web デザイナーとして豊富な CSS 経験を持つ私たちは、あらゆる種類のコード構文、互換性、スニペ...

表示または可視性によってHTML要素を非表示にする

場合によっては、特定の条件に基づいて Web ページ内の HTML 要素を表示するか非表示にするかを...