SQL - 布林 (位元) 運算子:初學者的友好指南
你好,未來的 SQL 巔峰大師!今天,我們將踏上一段令人興奮的旅程,探索 SQL 世界中的布林運算子。別擔心如果你之前從未寫過一行代碼——我將成為你可靠的嚮導,我們將一步步攻克這個主題。所以,拿一杯你喜歡的飲料,我們一起來深入探讨吧!
SQL 中的布林是什麼?
在深入細節之前,我們先從基礎開始。布林是一種數據類型,只能有兩種可能的值:TRUE 或 FALSE。這就像開關一樣——它要么是開的,要么是關的,沒有中間狀態。在 SQL 中,我們使用布林來做決策和根據特定條件過濾數據。
現在,讓我們看看不同的數據庫系統是如何處理布林的。
MySQL 中的布林
MySQL 是最流行的數據庫系統之一,但它沒有內置的 BOOLEAN 類型。相反,它使用 TINYINT(1) 來表示布林值。以下是一些簡單的說明:
- TRUE 用 1 表示
- FALSE 用 0 表示
讓我們創建一個簡單的表來演示這一點:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
is_enrolled TINYINT(1)
);
INSERT INTO students (id, name, is_enrolled) VALUES
(1, 'Alice', 1),
(2, 'Bob', 0),
(3, 'Charlie', 1);
在這個例子中,我們創建了一個 students
表,其中 is_enrolled
欄位作為我們的布林。Alice 和 Charlie 是在籍的 (TRUE),而 Bob 不是 (FALSE)。
MS SQL Server 中的布林
另一方面,Microsoft SQL Server 為布林值提供了一個專用的 BIT 數據類型。以下是它的運作方式:
- TRUE 用 1 表示
- FALSE 用 0 表示
讓我們在 MS SQL Server 中創建同樣的表:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
is_enrolled BIT
);
INSERT INTO students (id, name, is_enrolled) VALUES
(1, 'Alice', 1),
(2, 'Bob', 0),
(3, 'Charlie', 1);
結構相似,但我們在 is_enrolled
欄位使用 BIT 而不是 TINYINT(1)。
過濾布林數據
現在有了數據,讓我們學習如何使用布林條件來過濾它。這才是真正的魔法所在!
查找在籍學生
要查找所有在籍學生,我們可以使用以下查詢:
SELECT * FROM students WHERE is_enrolled = TRUE;
或者在 MySQL 中:
SELECT * FROM students WHERE is_enrolled = 1;
這將返回 Alice 和 Charlie,我們的在籍學生。
查找非在籍學生
要查找未在籍的學生,我們可以這樣做:
SELECT * FROM students WHERE is_enrolled = FALSE;
或者在 MySQL 中:
SELECT * FROM students WHERE is_enrolled = 0;
這將返回 Bob,我們的未在籍學生。
取消布林條件
有時,我們想找到條件的相反。我們可以使用 NOT 運算子來做到這一點:
SELECT * FROM students WHERE NOT is_enrolled;
這個查詢將返回所有未在籍的學生,這與我們之前查找未在籍學生的查詢相同。
處理 NULL 值
在 SQL 中,NULL 表示未知或缺失的值。它既不是 TRUE 也非 FALSE。當使用布林時,我們需要小心處理 NULL 值。讓我們添加一個在籍狀態未知的學生:
INSERT INTO students (id, name, is_enrolled) VALUES (4, 'David', NULL);
現在,如果我們運行之前的查詢,David 會在在籍和未在籍名單上都無法顯示。要查找在籍狀態未知的學生,我們可以使用:
SELECT * FROM students WHERE is_enrolled IS NULL;
這個查詢將返回 David,我們的未知在籍狀態學生。
更新布林值
最後,讓我們看看如何更新布林值。假設 Bob 决定入學:
UPDATE students SET is_enrolled = TRUE WHERE name = 'Bob';
或者在 MySQL 中:
UPDATE students SET is_enrolled = 1 WHERE name = 'Bob';
現在北京是入學的!
結論
好了,各位!我們已經涵蓋了 SQL 中布林運算子的基礎知識。記住,布林就像是數據庫中的簡單的問題:是/否。它們對於過濾數據和在查詢中做決策非常有用。
以下是我們所涵蓋的方法的快速參考表:
運算 | MySQL 語法 | MS SQL Server 語法 |
---|---|---|
創建布林列 | TINYINT(1) | BIT |
設置 TRUE | 1 | 1 |
設置 FALSE | 0 | 0 |
過濾 TRUE | WHERE column = 1 | WHERE column = TRUE |
過濾 FALSE | WHERE column = 0 | WHERE column = FALSE |
取消條件 | WHERE NOT column | WHERE NOT column |
檢查 NULL | WHERE column IS NULL | WHERE column IS NULL |
練習這些概念,很快你就能像專家一樣使用布林運算子!記住,精通 SQL 的關鍵在於練習和耐心。不要害怕嘗試不同的查詢——這是我們所有人學習和成長為程序員的方式。
快樂編程,願布林與你同在!
Credits: Image by storyset