MySQL IS NULL と IS NOT NULL の例

⚡ スマートサマリー

MySQL IS NULLとIS NOT NULLは、列に欠損値が含まれているかどうかをテストする比較キーワードです。NULLはデータの欠落を示し、ゼロや空文字列とは異なる動作をするため、信頼性の高いフィルタリングには専用の演算子が必要です。

  • 🧩 コア定義: NULLは、存在しないデータを表すプレースホルダーです。データ型ではなく、数値のゼロでもありません。
  • 算術的挙動: NULLを含む算術式はすべてNULLを返すため、69 + NULLは69ではなくNULLと評価されます。
  • 📊 総合的な影響: COUNT(column) やその他の集計関数は NULL 行をスキップしますが、COUNT(*) はテーブル内のすべての行をカウントします。
  • 🚫 NOT NULL制約: 列をNOT NULLとして宣言すると、値が省略された挿入はすべて拒否され、識別子などの必須フィールドが保護されます。
  • 🔍 正しいフィルタリング: IS NULLとIS NOT NULLだけが信頼できるテストです。なぜなら、等価演算子はNULL値と一致することはないからです。
  • <XNUMXxEXNUMX><XNUMXxEXNUMX><XNUMXxXNUMXA><XNUMXxXNUMX><XNUMXxXNUMXA>️️ 三値論理: NULLとの比較ではUNKNOWNが返されるため、SELECT NULL = NULLはTRUEではなくNULLを返します。

MySQL IS NULL および IS NOT NULL

SQLにおいて、NULLは値であると同時にキーワードでもあります。まずはNULL値について見ていきましょう。

MySQL NULL である、および NULL ではない

NULLとは何ですか MySQL?

簡単に言えば、 NULLは、存在しないデータのプレースホルダーです。テーブルへの挿入操作を実行する際、一部のフィールド値が利用できない場合があります。

真のリレーショナル データベース管理システムの要件を満たすために、 MySQL 未送信の値のプレースホルダーとしてNULLを使用します。以下のスクリーンショットは、データベーステーブルにおけるNULL値の表示例です。

値としての Null

空欄には、空白のテキストでもゼロでもなく、NULLと表示されていることに注意してください。先に進む前に、NULLの基本事項をいくつか確認しておきましょう。

  • NULL はデータ型ではありません – これは、「int」、「date」、またはその他の定義されたデータ型として認識されないことを意味します。
  • 算術演算 関与 NULL 常に NULLを返す例えば、69 + NULL = NULL です。
  • ブリッジ 集計関数 NULL値を含む行は無視する唯一の例外はCOUNT(*)で、NULL値に関係なくすべての行をカウントします。

集計関数がNULL値をどのように扱うか

このルールはレポートクエリが返す回答を変更するので、それを証明してみましょう。まずは、メンバーテーブルの現在の内容から始めます。

SELECT * FROM `members`;

上記のスクリプトを実行すると、次の結果が得られます。

membership_ number full_ names gender date_of_ birth physical_ address postal_ address contact_ number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 lwolowitz[at]email.me

強調表示されている contact_number 列には合計 9 行ありますが、そのうち 2 行は NULL です。連絡先番号を更新したメンバーの数を数えてみましょう。

SELECT COUNT(contact_number) FROM `members`;

上記のクエリを実行すると、次の結果が得られます。

COUNT(contact_number)
7

注意: 答えは9ではなく7です。なぜなら、2つのNULL値は含まれていないからです。同じテーブルに対してCOUNT(*)を実行すると、COUNT(*)は値ではなく行数をカウントするため、9が返されます。

NOT NULL 値

より安全な方法は、必須列にNULL値が入力されないようにすることです。これはNOT NULL制約の役割です。

「NOT」とは何ですか? Operaトール?

NOT論理演算子はブール条件をテストするために使用され、条件が偽の場合は真を返します。テスト対象の条件が真の場合は偽を返します。

状態 NOT Opera結果
×
×

NOT NULLを使う理由とは?

クエリ結果セットに対して計算を実行し、その値を返す必要がある場合があります。NULL値を含む列に対して算術演算を実行すると、結果はNULLになります。このような状況を回避するために、NOT NULL句を使用して、データ操作の対象となる結果を制限することができます。

NOT NULL列を持つテーブルの作成

新しい行を挿入する際に、常に値が入力されるべき特定のフィールドを持つテーブルを作成したいとします。テーブルを作成する際に、特定のフィールドにNOT NULL句を使用できます。

以下の例では、従業員データを含む新しいテーブルを作成します。従業員番号は必ず入力してください。

CREATE TABLE `employees`(
  employee_number int NOT NULL,
  full_names varchar(255) ,
  gender varchar(6)
);

それでは、従業員番号を指定せずに新しいレコードを挿入してみて、何が起こるか見てみましょう。

INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');

上記のスクリプトを実行すると、 MySQL ワークベンチ 必須列が省略されているため、以下のエラーが発生します。

NOT NULL 値

IS NULL および IS NOT NULL キーワード

この制約は、新しいNULL値の追加をブロックします。既に存在するNULL値を扱うには、キーワードとしてNULLを使用します。構文は以下のとおりです。

column_name IS NULL
column_name IS NOT NULL

Pr_media

  • "無効である" ブール比較を実行するキーワードです。 指定された値が NULL の場合は true を返し、指定された値が NULL でない場合は false を返します。
  • 「NULLではない」 は、逆の比較を行うキーワードです。指定された値がNULLでない場合はtrueを返し、指定された値がNULLの場合はfalseを返します。

IS NOT NULLキーワードを使用して、列にNULL値を含むすべての行を除外する具体的な例を見てみましょう。

上記のメンバーテーブルを例にとり、連絡先番号がNULLでないメンバーの詳細が必要だとします。次のようなクエリを実行できます。

SELECT * FROM `members` WHERE contact_number IS NOT NULL;

上記のクエリを実行すると、連絡先番号が含まれているレコードが7件のみ返されます。これは、前のセクションのCOUNTの結果と一致します。

では、その逆、つまり連絡先番号が欠落している会員レコードを取得したいとしましょう。次のクエリを使用できます。

SELECT * FROM `members` WHERE contact_number IS NULL;

上記のクエリを実行すると、連絡先番号がNULLである2つのメンバーレコードが取得されます。

membership_ number full_names gender date_of_birth physical_address postal_address contact_ number email
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

警告: 「WHERE contact_number = NULL」のような条件では、NULL値が存在するにもかかわらず、空の結果セットが返されます。等号演算子はNULLと一致することはないため、「IS NULL」が唯一正しいテストです。

NULL値を3値論理で比較する

XNUMX値ロジック – NULL を含む条件に対してブール演算を実行すると、 「不明」、「真」、「偽」.

「IS NULL」キーワードの使用 比較演算を行うとき NULL を含む 収益 true or false他の比較演算子を使用すると、 「不明」(NULL)以下の表は、それぞれの式を並べて比較したものです。

表現 結果 意味
SELECT 5 = 5; 1 TRUE
SELECT NULL = NULL; NULL UNKNOWN
SELECT 5 > 5; 0 間違った情報
NULL > NULL を選択します。 NULL UNKNOWN
SELECT 5 IS NULL; 0 間違った情報
SELECT NULL IS NULL; 1 TRUE

数値5をそれ自身と比較し、次にNULLに対して同じ操作を繰り返します。

SELECT 5 =5;
SELECT NULL = NULL;
5 =5 NULL = NULL
1 NULL

最初の結果は 1 (TRUE) です。2 番目の結果は NULL です。 MySQL ある未知の値が別の未知の値と等しいと断定することはできません。同じ値に対してIS NULLキーワードを使用してください。

SELECT 5 IS NULL;
SELECT NULL IS NULL;
5 IS NULL NULL IS NULL
0 1

今回は、答えが0(偽)と1(真)で明確です。NULLが関係する場合、明確な答えを返すのはIS NULLとIS NOT NULLキーワードのみです。

よくあるご質問

ゼロは数値であり、空文字列はテキストであるため、どちらも等価性テストに一致します。NULLは値が全く指定されていないことを意味するため、IS NULLとIS NOT NULLにのみ応答します。

IFNULL(column, 'N/A') は、column が NULL の場合に代替値を返します。 COALESCE(a, b, c) は、NULL でない最初の引数を返します。どちらも、内部で役立ちます。 MySQL 機能 とレポート。

いいえ。 MySQL NOT NULLは、行を識別するキーが欠落することは許されないため、すべての主キー列に自動的に適用されます。UNIQUEインデックスはこれとは異なり、複数のNULL値を許容します。

通常はそうです。次のようなツール内のAIアシスタント MySQL ワークベンチ 「電話番号のないメンバー」をWHERE句のIS NULL句に変換します。 Revフィルターを確認してください。NULL との等価性テストでは何も返されないためです。

多くの場合、そうです。AI レビュー ツールは、= NULL 比較などの欠陥を検出します。 SELECT これは、NULLを含む列と、NULLを含むNOT INリストの平均値を算出するものです。最終的な判断は、データを把握している人物に委ねられます。