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

推薦する

入力ボックスのコンテンツプロンプトと非表示機能を実装する JavaScript

入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...

Web Storage APIの使用に関する簡単な説明

目次1. ブラウザのローカルストレージ技術1.1、セッションストレージ1.2、ローカルストレージ2....

Vue カプセル化に基づくプルダウン更新およびプルアップ読み込みコンポーネント

VueとネイティブJavaScriptカプセル化に基づいて、プルダウンリフレッシュとプルアップロード...

要素のフォーム要素の使用の概要

フォーム要素はたくさんあります。簡単にまとめると、次のようになります。私のやり方では、主にテキスト ...

VMware 12 での Ubuntu 16.04 インストール チュートリアル

この記事では、VMware 12でのUbuntu 16.04のインストールチュートリアルを参考までに...

Tkinterはjsキャンバスを使用してグラデーションカラーを実現します

目次1. RGBを使用して色を表す2. Tkinter キャンバスコンポーネント3. グラデーション...

Zabbix上のすべてのホストのIPとホスト名を取得する

ザビックスZabbix ([`zæbiks]) は、WEB インターフェースに基づいて分散システム監...

ベスト HTML/CSS デザインおよび開発フレームワーク 15 選を紹介します

プロフェッショナルな Web デザインは複雑で時間がかかります。 HTML と CSS フレームワー...

CSS で中空効果を実装するサンプルコード

効果原理主にCSSグラデーションを使用して、切り取りを必要としない背景のくり抜きを実現します。クーポ...

マインドマップを使って4つの側面からWeb標準の価値を議論する

このアイデアを改善し、より良い意見を得られることを期待して、議論を刺激するためにいくつかの値を大まか...

CSS3 天子グリッドリストのスタイルの書き方

多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...

Ubuntu 20.04は静的IPアドレスを設定します(異なるバージョンを含む)

Ubuntu 20.04はnetplanを通じてネットワークを管理するため、以前のバージョンとは少...

nodejsとyarnをインストールし、Taobaoソースプロセスレコードを構成する

目次1. nodejsをダウンロードする2. ダブルクリックしてインストール3. グローバル npm...

Linux /etc/network/interfaces 設定インターフェース方法

Linux の /etc/network/interfaces ファイルは、ネットワーク インターフ...

MySQLの日付加算と減算関数の詳細な説明

1. 追加時間()指定した秒数を日付に追加する select addtime(now(),1); -...