SQL - 布林 (位元) 運算子:初學者的友好指南

你好,未來的 SQL 巔峰大師!今天,我們將踏上一段令人興奮的旅程,探索 SQL 世界中的布林運算子。別擔心如果你之前從未寫過一行代碼——我將成為你可靠的嚮導,我們將一步步攻克這個主題。所以,拿一杯你喜歡的飲料,我們一起來深入探讨吧!

SQL - BOOLEAN (BIT) Operator

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