SQL - IS NULL: NULL値の handlingの芸術を掌握する

こんにちは、データベース愛好家の皆さん!今回は、NULL値の不思議な世界に踏み込む、魅力的なSQLの旅へようこそ。あなたのガイド、クエリ教授です。今日はIS NULLオペレータの秘密を解き明かします。虚拟のメモ padsを準備して、一緒に見ていきましょう!

SQL - IS NULL

SQL IS NULLオペレータ: NULL検出のスーパーヒーロー

パーティで誰が贈り物を持って来なかったかを調べようとしていると想像してください。データベースの世界では、IS NULLはそんな空手の客(または、私たちのケースでは空のデータベースフィールド)を見つけるためのスーパーパワーの贈り物検出器のようなものです。

IS NULLオペレータは、データベース内の空の値(NULL値)をテストするために使用されます。でも、(NULL)は一体何でしょうか?

NULLはゼロではありません。空の文字列でもありません。何もない状態です。これをデータベースにおけるため息符?‍♂️と考えてください。

以下に、私たちのNULL関連オペレータの簡単なチートシートを示します:

オペレータ 説明
IS NULL 値がNULLかどうかをチェック
IS NOT NULL 値がNULLでないかどうかをチェック

では、このスーパーヒーローをさまざまなSQLシナリオでどのように使用できるかを見ていきましょう!

IS NULLとSELECT文: 目に見えないものを見つける

基本的な使用方法

まず、簡単な例から始めましょう。studentsというテーブルがあり、student_idnameemailというカラムがあるとします。一部の学生はメールアドレスを提供していない場合があります。

SELECT * FROM students
WHERE email IS NULL;

このクエリは、emailフィールドがNULLのすべての行を返します。まるで、「メールアドレスを書き忘れた学生を全部見せてくれ!」と言っているようなものです。

他の条件と組み合わせる

IS NULLを他の条件と組み合わせることもできます。例えば:

SELECT name, student_id
FROM students
WHERE email IS NULL AND student_id > 1000;

このクエリは、「メールアドレスがない学生で、IDが1000を超えるもの」を返します。まるで、探偵のように検索基準を絞り込んでいるようなものです!

IS NULLとCOUNT()関数: 空を数える

COUNT()関数はIS NULLと素晴らしいパートナーです。一緒に動作を見てみましょう:

SELECT COUNT(*) AS total_students,
COUNT(email) AS students_with_email,
COUNT(*) - COUNT(email) AS students_without_email
FROM students;

このクエリは以下の3つの情報を提供します:

  1. 学生の总数
  2. メールアドレスを持つ学生の数
  3. メールアドレスを持たない学生の数

COUNT(*)はすべての行を数えますが、COUNT(email)はNULLでないメール値のみを数えます。まるで、すべてのパーティの客人を数え、その中で贈り物を持つ客人を数え、差を取って空手の客人を探すようなものです!

IS NULLとUPDATE文: 空を埋める

時々、NULL値をより意味のあるものに更新したいと思うかもしれません。以下のようにします:

UPDATE students
SET email = '[email protected]'
WHERE email IS NULL;

このクエリは、すべてのNULLメール値を'[email protected]'に置き換えます。まるで、空手の客人にデフォルトの贈り物を渡しているようなものです!

より複雑な例

NULLメールアドレスを学生の名前とデフォルトドメインの組み合わせで更新したいとします:

UPDATE students
SET email = LOWER(REPLACE(name, ' ', '_')) || '@student.example.com'
WHERE email IS NULL;

このクエリは、NULLメールを持つ学生に対して以下のことを行います:

  1. 彼らの名前を取得
  2. スペースをアンダースコアに置き換える
  3. 小文字に変換
  4. '@student.example.com'を末尾に追加

「John Doe」は「[email protected]」に変わります。まるで、名前タグを作成して忘れた客人に渡しているようなものです!

IS NULLとDELETE文: 空を削除する

時々、NULL値を持つ行を削除したいと思うかもしれません。以下のようにします:

DELETE FROM students
WHERE email IS NULL;

このクエリは、emailがNULLのすべての行を削除します。注意してください!これは少し厳しいです。まるで、贈り物を持っていない客人を全部追い出しているようなものです!

安全なアプローチ

代わりに、まずこれらの行を別のテーブルに移動することができます:

INSERT INTO incomplete_records
SELECT * FROM students
WHERE email IS NULL;

DELETE FROM students
WHERE email IS NULL;

このアプローチでは、まずNULLメールの記録を'incomplete_records'テーブルに移動し、その後メインテーブルから削除します。まるで、空手の客人を別の部屋に移動して完全に追い出さないようにしているようなものです!

結論: NULLを受け入れる

そして、皆さん、これでIS NULLオペレータとそのさまざまな用途について探求しました。NULL値はあなたの敵ではありません。誤解された情報の一部であり、適切に処理されるのを待っているだけです。

SQLの旅を続ける中で、NULL値の処理をマスターすることは、クリーンで正確なデータベースを維持するために非常に重要です。まるで、スキルfulパーティの主催者のように、誰もが適切に対応されることを確認するようなものです!

練習を続け、好奇心を持ち続け、忘れないでください:データベースの世界では、時々「何も」(NULL)が「すべて」を意味するかもしれません!

Credits: Image by storyset