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);

结构相似,但我们使用BIT而不是TINYINT(1)作为is_enrolled列。

筛选布尔数据

现在我们有了数据,让我们学习如何使用布尔条件来筛选它。这才是真正的魔法所在!

查找已报名学生

要查找所有已报名的学生,我们可以使用以下查询:

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';

现在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