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

SQLにおいて、NULLは値であると同時にキーワードでもあります。まずはNULL値について見ていきましょう。
NULLとは何ですか MySQL?
簡単に言えば、 NULLは、存在しないデータのプレースホルダーです。テーブルへの挿入操作を実行する際、一部のフィールド値が利用できない場合があります。
真のリレーショナル データベース管理システムの要件を満たすために、 MySQL 未送信の値のプレースホルダーとして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 | |
|---|---|---|---|---|---|---|---|
| 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 | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Male | NULL | 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 ワークベンチ 必須列が省略されているため、以下のエラーが発生します。
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 | |
|---|---|---|---|---|---|---|---|
| 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キーワードのみです。


