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

推薦する

Node-Redを使用してMySQLデータベースに接続する方法

Node-red をデータベース (mysql) に接続するには、まずコンピューターに MySQL ...

MySQL 8.0.12 のインストールと設定方法のグラフィックチュートリアル (Windows 版)

1. はじめにプロジェクトではMySQLを使用しています。インターネット上の例を参考にインストール...

Linux 上での MySQL データベースのインストールと Java プロジェクトの構成に関する詳細なグラフィック説明

1. MySQLデータベースをインストールする① ダウンロードして解凍し、/opt/softディレク...

MySQLのユーザー管理とPostgreSQLのユーザー管理の違い

1. MySQL ユーザー管理[例1.1] ローカルMySQLサーバーのテストデータベースにroot...

Html+CSS フローティング広告ストリップの実装

1.html部分コードをコピーコードは次のとおりです。 <!DOCTYPE html> ...

mysql8.0.14.zip のインストール中にデータ フォルダを自動的に作成できませんでした。サービスを開始できません。

今日システムを再インストールした後、コンピューターに mysql を再インストールし、ZIP ファイ...

MySQL 5.5.27 インストール グラフィック チュートリアル

1. MYSQLのインストール1. ダウンロードしたMySQLインストールファイルmysql-5.5...

航空機戦争ゲームを実装するためのJavaScript

この記事では、キャンバスとjsを使用して簡単な飛行機戦争を実装する方法を参考までに紹介します。具体的...

MySQL の自動インクリメント主キーが連続していないのはなぜですか?

目次1. はじめに2. 自己増分ストレージの説明3つの自己付加価値修正メカニズム4. 自己評価を修正...

MacOS での MySQL 8.0.18 のインストールと設定方法のグラフィック チュートリアル

この記事では、MacOSでのMySQL 8.0.18のインストールと成功したコマンドライン操作を記録...

いくつかのMySQL更新操作のケース分析

目次ケーススタディアカウント残高を更新する直接更新楽観的ロック方式ロックフリーソリューションキューイ...

Javascriptジェネレータの紹介と使用

ジェネレータとは何ですか?ジェネレーターは関数内で実行されるコードです。値を返した後、一時停止し、呼...

Baidu 入力メソッドが API を公開、自由に移植して使用できると主張

百度入力方式の担当者は、百度入力方式のオープンAPIの最大の利点は操作が便利であることであり、プラッ...

Vue のトランジション効果とアニメーショントランジションの使用例の詳細な説明

目次遷移フック関数カスタム遷移クラス名遷移グループの使用まとめまずは例を見てみましょうコードは次のと...

Vueはボールのスライディングクロス効果を実現します

この記事の例では、ボールのスライドとクロスの効果を実現するためのVueの具体的なコードを共有していま...