MySQL - IS NULL 運算子

您好,未來的數據庫大師!今天,我們將踏上一段令人興奮的旅程,進入 MySQL 的世界,特別專注於 IS NULL 運算子。別擔心如果您是編程新手;我會一步步引導您了解這個主題,就像我過去幾年來對無數學生所做的那樣。所以,戴上您們的虛擬思考帽,讓我們一起深入探討吧!

MySQL - IS NULL Operator

MySQL IS NULL 運算子

在我們開始之前,讓我們想像您正在組織一個派對並制作客人名單。您的一些朋友還沒有回應,所以他們的反應是未知的,或者用數據庫的術語來說,是 NULL。IS NULL 運算子就像您的工具,用來找出還沒有回應的人。

在 MySQL 中,NULL 表示缺失或未知的值。它不是零,也不是空字符串 - 它是任何值的缺失。IS NULL 運算子幫助我們在數據庫中找到這些缺失的值。

這裡是基本語法:

column_name IS NULL

簡單吧?讓我們看看如何在現實世界的情景中使用它。

IS NULL 與 SELECT 語句

SELECT 語句就像您數據庫的放大鏡。當與 IS NULL 結合使用時,它成為了一個強大的工具,用於查找缺失的信息。

假設我們有一個名為 students 的表,其中包含列:idnameemail。一些學生還沒有提供他們的電子郵件地址。

SELECT * FROM students WHERE email IS NULL;

這個查詢將顯示所有還沒有提供電子郵件地址的學生。這就像在問,“我們需要追蹤誰的電子郵件?”

讓我們分解一下:

  • SELECT *:這意味著“選擇所有列”
  • FROM students:我們正在查看 students
  • WHERE email IS NULL:這是我們的條件 - 我們只想選擇電子郵件缺失的行

這裡有另一個例子:

SELECT name FROM students WHERE phone_number IS NULL;

這個查詢將給我們提供還沒有提供電話號碼的學生的名字。這就像創建一個“待打電話”名單!

IS NULL 與 COUNT() 函數

現在,如果我們想知道有多少學生還沒有提供他們的電子郵件地址,我們可以使用 COUNT() 函數。

SELECT COUNT(*) FROM students WHERE email IS NULL;

這個查詢將返回一個單一的數字 - 缺失電子郵件地址的學生數量。這就像在問,“我需要發多少個提醒電子郵件?”

我們可以讓這個信息更具體:

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

這個查詢給我們提供了一個完整的畫面:

  • total_students:學生的總數
  • students_with_email:提供電子郵件的學生數量
  • students_without_email:缺失電子郵件的學生數量

這就像對您的聯繫信息收集進度進行快速報告!

IS NULL 與 UPDATE 語句

有時,我們可能想要更新我們的數據庫,將 NULL 值替換為其他內容。結合 UPDATE 語句和 IS NULL 可以幫助我們做到這一點。

UPDATE students SET email = 'not provided' WHERE email IS NULL;

這個查詢將所有 NULL 的電子郵件值更改為 'not provided'。這就像在表單上填寫 'N/A' 來表示缺失信息。

這裡有另一個實用的例子:

UPDATE products SET stock = 0 WHERE stock IS NULL;

這可能在庫存系統中很有用,假設 NULL 庫存意味著我們已經沒有該產品。

IS NULL 與 DELETE 語句

在某些情況下,我們可能想要刪除缺失信息的條目。結合 DELETE 語句和 IS NULL 可以幫助我們清理數據庫。

DELETE FROM students WHERE phone_number IS NULL AND email IS NULL;

這個查詢將刪除電話號碼和電子郵件都缺失的所有學生記錄。這就像清理您的聯繫名單,刪除無法聯繫的人的條目。

使用 DELETE 操作時請謹慎!在執行之前總是雙重檢查您的條件。

IS NULL 運算子使用客戶端程序

當您在使用 MySQL 客戶端程序時,您可以在您的查詢中使用 IS NULL 運算子,就像我們討論的那樣。這裡有一個您可能運行的腳本:

-- 連接到數據庫
USE school_database;

-- 查找還沒有電子郵件地址的學生
SELECT name FROM students WHERE email IS NULL;

-- 計算還沒有電話號碼的學生數量
SELECT COUNT(*) AS missing_phone_numbers FROM students WHERE phone_number IS NULL;

-- 將缺失的 GPA 更新為 0.0
UPDATE students SET gpa = 0.0 WHERE gpa IS NULL;

-- 刪除沒有聯繫信息的非活動學生
DELETE FROM students WHERE last_login IS NULL AND email IS NULL AND phone_number IS NULL;

這個腳本執行一系列操作:

  1. 選擇要使用的數據庫
  2. 查找還沒有電子郵件的學生
  3. 計算還沒有電話號碼的學生數量
  4. 將缺失的 GPA 更新為 0.0
  5. 刪除沒有聯繫信息的非活動學生

記住,在客戶端程序中,您可以將這些操作結合起來,甚至創建函數或存儲過程,以使您的數據庫管理更高效。

結論

我的親愛的學生們,以上就是 MySQL 的 IS NULL 運算子,我們看到了它是如何與 SELECT、COUNT()、UPDATE 和 DELETE 語句一起使用的。我們學會了如何查找缺失數據、計算它、更新它,以及在必要時刪除它。

記住,NULL 值就像您數據庫中的幽靈 - 它們代表著缺失的信息。IS NULL 運算子就是您的幽靈探测器,幫助您找到和管理這些捉摸不定的值。

隨著您在 MySQL 的旅程中繼續前行,您會發現還有許多其他運算子和函數要學習。但現在,為您學會 IS NULL 而給自己一個鼓勵。您距離成為數據庫大師又近了一步!

繼續練習,保持好奇心,並且開心地編程!

方法 描述 示例
SELECT 與 IS NULL 在指定列中查找 NULL 值的行 SELECT * FROM students WHERE email IS NULL;
COUNT() 與 IS NULL 在指定列中計算 NULL 值的行數 SELECT COUNT(*) FROM students WHERE phone_number IS NULL;
UPDATE 與 IS NULL 在指定列中更新具有 NULL 值的行 UPDATE students SET email = 'not provided' WHERE email IS NULL;
DELETE 與 IS NULL 刪除指定列中具有 NULL 值的行 DELETE FROM students WHERE last_login IS NULL AND email IS NULL;

Credits: Image by storyset