MySQL中的Boolean类型
在MySQL中,没有真正的Boolean类型,但是可以通过tinyint类型模拟Boolean类型。通常,我们会将tinyint(1)类型作为Boolean类型使用,因为该类型只能存储0或1,符合Boolean类型的特性。
阅读更多:MySQL 教程
tinyint(1)类型有多少个值?
尽管我们通常将tinyint(1)类型作为Boolean类型使用,但它实际上可以存储-127到127之间的任何整数。下面是一个示例,说明在tinyint(1)类型中,实际上可以存储多种值。
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bool` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `test` (`bool`) VALUES (-127), (0), (127);
从上面的示例中,我们可以看到,tinyint(1)类型可以存储从-127到127之间的任意整数值。但是,我们通常将其视为Boolean类型,并仅存储0和1,以便更好地适配Boolean类型的应用程序。
如何查找tinyint(1)类型中存储的值?
查找tinyint(1)类型的值与查找其他类型的值类似。
SELECT * FROM `test` WHERE `bool` = 1; -- 查找tinyint(1)类型中值为1的记录
SELECT * FROM `test` WHERE `bool` = 0; -- 查找tinyint(1)类型中值为0的记录
SELECT * FROM `test` WHERE `bool` <> 0; -- 查找tinyint(1)类型中非0值的记录
总结
tinyint(1)类型在MySQL中通常用于模拟Boolean类型。虽然该类型实际上可以存储多种整数值,但我们通常仅将其视为Boolean类型,并仅存储值0和1。查找tinyint(1)类型中存储的值与查找其他类型的值相同。