MySQL 布尔值的存储方式以及如何改变布尔值

MySQL布尔值 – 更改值?

在MySQL中,布尔值(Boolean)是一个非常有用的数据类型,表示True或False。它经常与条件语句一起使用,例如IF语句等。在MySQL中,存储布尔值的方式略有不同于其他数据库系统。这篇文章将探讨MySQL布尔值的存储方式以及如何改变布尔值。

阅读更多:MySQL 教程

MySQL布尔值的存储方式

MySQL中的布尔类型实际上是TINYINT类型的一个别名,其中0表示False,1表示True。此外,MySQL中的布尔值具有以下规则:

  1. 默认情况下,如果没有提供值,则将值设置为False。
  2. 如果设置NULL,则值将被设置为NULL。
  3. 在插入或更新数据表时,MySQL会将非零值插入TINYINT列,将零值插入为零。
  4. 可以在WHERE子句中使用布尔值,如SELECT * FROM table WHERE column = TRUE;

下面是一些使用MySQL布尔值的示例:

CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `is_male` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `person` (`name`, `is_male`) VALUES
('Tom', 1),
('Kate', 0);

SELECT * FROM `person`;

+----+------+---------+
| id | name | is_male |
+----+------+---------+
|  1 | Tom  |       1 |
|  2 | Kate |       0 |
+----+------+---------+

如何翻转布尔值

在MySQL中,可以使用以下两种方法来更改布尔值:

  1. 使用CASE语句
  2. 使用逻辑运算符NOT

使用CASE语句

CASE语句是SQL中的条件语句,根据条件选择不同的结果。它有以下语法:

CASE WHEN condition THEN result ELSE other_result END

通过使用CASE语句,可以创建一个虚拟的列,该列计算结果并返回True或False,如下所示:

SELECT name, is_male, 
CASE WHEN is_male = 1 THEN 'Female' ELSE 'Male' END AS gender 
FROM person;

+------+---------+--------+
| name | is_male | gender |
+------+---------+--------+
| Tom  |       1 | Female |
| Kate |       0 | Male   |
+------+---------+--------+

在这个例子中,我们使用CASE语句来计算性别,如果“is_male”列是1,则值为“女”,否则为“男”。因此,“Tom”的性别为“女”,“Kate”的性别为“男”。

为了更改布尔值,我们可以使用相同的原理。例如,假设我们想要交换性别,我们可以使用以下查询:

SELECT name, is_male, 
CASE WHEN is_male = 1 THEN FALSE ELSE TRUE END AS is_female 
FROM person;

+------+---------+-----------+
| name | is_male | is_female |
+------+---------+-----------+
| Tom  |       1 |         0 |
| Kate |       0 |         1 |
+------+---------+-----------+

在这个例子中,我们创建了一个名为“is_female”的虚拟列,并使用CASE语句更改布尔值。如果“is_male”列为1,则值为False,否则为True。

使用逻辑运算符NOT

逻辑运算符NOT用于翻转布尔值。如果输入为True,则输出为False。如果输入为False,则输出为True。

例如,假设我们有一个包含布尔值的表,并且我们想要翻转所有的布尔值,我们可以使用以下查询:

SELECT name, is_male, NOT is_male AS is_female
FROM person;

+------+---------+-----------+
| name | is_male | is_female |
+------+---------+-----------+
| Tom  |       1 |         0 |
| Kate |      0 |        1 |
+------+---------+-----------+

在这个查询中,我们使用NOT运算符翻转“is_male”列的布尔值,并将结果存储在名为“is_female”的新列中。

总结

MySQL中的布尔类型实际上是TINYINT类型的一个别名,其中0表示False,1表示True。在MySQL中更改布尔值有两种方法:使用CASE语句或使用逻辑运算符NOT。无论使用哪种方法,都可以创建一个新列来存储更改后的布尔值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程