MySQL IS NULL と IS NOT NULL チュートリアルと例
SQL では、Null は値であると同時にキーワードでもあります。 まず NULL 値を見てみましょう –
値としての Null
簡単に言えば、NULL は存在しないデータのプレースホルダーにすぎません。テーブルで挿入操作を実行すると、一部のフィールド値が使用できなくなる場合があります。
真のリレーショナル データベース管理システムの要件を満たすために、 MySQL は、送信されていない値のプレースホルダーとして NULL を使用します。以下のスクリーンショットは、データベース内で NULL 値がどのように表示されるかを示しています。
議論をさらに進める前に、NULL の基本のいくつかを見てみましょう。
- NULL はデータ型ではありません – これは、「int」、「date」、またはその他の定義されたデータ型として認識されないことを意味します。
- 算術演算 関与 NULL 常に NULLを返す たとえば、69 + NULL = NULL です。
- すべて 集計関数 NULL 値を持たない行にのみ影響します。.
ここで、count 関数が 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 を更新したすべてのメンバーを数えてみましょう
SELECT COUNT(contact_number) FROM `members`;
上記のクエリを実行すると、次の結果が得られます。
COUNT(contact_number) |
---|
7 |
注: NULL の値は含まれていません。
そうでないものは何ですか?
NOT論理演算子はブール条件をテストするために使用され、条件が偽の場合にtrueを返します。NOT演算子は、テストされた条件が真の場合にfalseを返します。
状態 | 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 ワークベンチで次のエラーが発生します。
NULL キーワード
NULLは、NULLを含む値に対してブール演算を実行するときにキーワードとして使用することもできます。このような目的では、「IS/NOT」キーワードがNULLワードと組み合わせて使用されます。NULLをキーワードとして使用する場合の基本的な構文は次のとおりです。
`comlumn_name' IS NULL `comlumn_name' NOT NULL
Pr_media
- "無効である ブール比較を実行するキーワードです。 指定された値が NULL の場合は true を返し、指定された値が NULL でない場合は false を返します。
- 「ヌルではありません」ブール比較を実行するキーワードです。 指定された値が NULL でない場合は true を返し、指定された値が null の場合は false を返します。
次に、NOT NULL キーワードを使用して、NULL 値を持つすべての列値を削除する実際の例を見てみましょう。
上記の例を続けて、連絡先番号がnullでないメンバーの詳細が必要だとします。次のようなクエリを実行できます。
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
上記のクエリを実行すると、連絡先番号が null ではないレコードのみが表示されます。
連絡先番号がnullのメンバーレコードが欲しいとします。次のクエリを使用できます。
SELECT * FROM `members` WHERE contact_number IS NULL;
上記のクエリを実行すると、連絡先番号がNULLのメンバーの詳細が表示されます。
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 |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 |
NULL 値の比較
XNUMX値ロジック – NULLを含む条件でブール演算を実行すると、 「不明」、「真」、または「偽」。
たとえば、 「IS NULL」キーワードを使用する 比較演算を行うとき NULL を含む どちらでも戻れます true or false他の比較演算子を使用すると、 「不明」(NULL)。
数字の 5 と XNUMX を比較するとします。
SELECT 5 =5;
クエリ結果は 1 で、TRUE を意味します。
5 =5 |
---|
1 |
NULLで同じ操作をしてみましょう
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
別の例を見てみましょう
SELECT 5 > 5;
5 > 5 |
---|
0 |
クエリ結果は 0 で、FALSE を意味します。
NULL を使用した同じ例を見てみましょう
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
IS NULL キーワードを使用しましょう
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
クエリ結果は 0 (FALSE) です。
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
クエリ結果は 1、つまり TRUE です
まとめ
- NULL は、オプションのテーブル フィールドの値のプレースホルダーです。
- MySQL NULL 値は他のデータ型とは異なる方法で処理されます。 NULL 値を条件で使用すると、偽のブール値として評価されます。
- NOT 論理演算はブール値をテストするために使用され、ブール値が false の場合は true と評価され、ブール値が true の場合は false と評価されます。
- NOT NULL 句は、結果セットから NULL 値を削除するために使用されます。
- NULL 値に対して算術演算を実行すると、常に NULL 結果が返されます。
- [、= などの比較演算子は NULL 値の比較には使用できません。