MySQL BOOLEAN数据类型简介

时间:2019-11-20 08:52:10  来源:igfitidea点击:

简介:本教程向您展示如何使用MySQL BOOLEAN数据类型存储布尔值true和false。

MySQL BOOLEAN数据类型简介

MySQL没有内置的布尔类型。
但是,它改用TINYINT(1)。
为了更加方便,MySQL提供了BOOLEAN或BOOL作为TINYINT(1)的同义词。

在MySQL中,零被视为false,非零值被视为true。
要使用布尔文字,请使用常量TRUE和FALSE,它们的值分别为1和0。
请参见以下示例:

SELECT true, false, TRUE, FALSE, True, False;
-- 1 0 1 0 1 0

MySQL BOOLEAN示例

MySQL将布尔值作为整数存储在表中。
为了说明这一点,让我们看下面的任务表:

CREATE TABLE tasks (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    completed BOOLEAN
);

即使我们将完成的列指定为BOOLEAN,当我们显示表定义时,它还是TINYINT(1),如下所示:

DESCRIBE tasks;

以下语句将两行插入到任务表中:

INSERT INTO tasks(title,completed)
VALUES('Master MySQL Boolean type',true),
      ('Design database table',false);

在将数据保存到Boolean列之前,MySQL会将其转换为1或0。
以下查询从任务表中检索数据:

SELECT 
    id, title, completed
FROM
    tasks;

如您所见,true和false分别转换为1和0。

由于布尔值为TINYINT(1),因此可以在布尔列中插入1和0以外的值。
考虑以下示例:

INSERT INTO tasks(title,completed)
VALUES('Test Boolean with a number',2);

运行正常。

如果要输出结果为true和false,则可以使用IF函数,如下所示:

SELECT 
    id, 
    title, 
    IF(completed, 'true', 'false') completed
FROM
    tasks;

MySQL BOOLEAN运算子

要在任务表中获取所有已完成的任务,您可能会提出以下查询:

SELECT 
    id, title, completed
FROM
    tasks
WHERE
    completed = TRUE;

如您所见,它仅返回具有完成值1的任务。
要对其进行修复,必须使用IS运算符:

SELECT 
    id, title, completed
FROM
    tasks
WHERE
    completed IS TRUE;

在此示例中,我们使用IS运算符针对布尔值测试了一个值。

要获取待处理的任务,请使用IS FALSE或IS NOT TRUE,如下所示:

SELECT 
    id, title, completed
FROM
    tasks
WHERE
    completed IS NOT TRUE

在本教程中,您学习了如何使用MySQL BOOLEAN数据类型(它是TINYINT(1)的同义词),以及如何操作布尔值。