MySQL BOOLEAN 和 TINYINT 区别

MySQL BOOLEAN 和 TINYINT 区别

在MySQL中,BOOLEAN和TINYINT都可以用来表示布尔类型的值。然而,在实际使用时,它们的行为有时会让人感到困惑。

阅读更多:MySQL 教程

BOOLEAN

首先,我们来看一下BOOLEAN类型。在MySQL中,BOOLEAN类型实际上是TINYINT(1)的别名。它可以存储三种值:0、1和NULL(空值)。通常,我们将0解释为“false”,1解释为“true”,而NULL则表示值未知。

下面是一个简单的例子:

CREATE TABLE mytable (
   id INT PRIMARY KEY,
   active BOOLEAN
);

INSERT INTO mytable (id, active)
VALUES (1, TRUE), (2, FALSE), (3, NULL);

在上面的例子中,我们创建了mytable表,并添加了三个行。第一个行的active值为TRUE,第二个行的active值为FALSE,第三个行的active值为NULL。

现在,我们来查询一下这个表:

SELECT * FROM mytable;

输出结果如下:

id  active
1   1
2   0
3   NULL

从结果可以看出,MySQL将TRUE解释为1,将FALSE解释为0,将NULL解释为NULL。

TINYINT

接下来,我们来看一下TINYINT类型。TINYINT类型实际上是一个可以存储8位有符号整数的类型。它可以存储的值的范围是-128到127(或0到255,如果使用无符号模式)。

下面是一个简单的例子:

CREATE TABLE mytable (
    id INT PRIMARY KEY,
    active TINYINT(1)
);

INSERT INTO mytable (id, active)
VALUES (1, 1), (2, 0), (3, NULL);

在上面的例子中,我们创建了mytable表,并添加了三个行。第一个行的active值为1,第二个行的active值为0,第三个行的active值为NULL。

现在,我们来查询一下这个表:

SELECT * FROM mytable;

输出结果如下:

id  active
1   1
2   0
3   NULL

从结果可以看出,与BOOLEAN一样,MySQL将TINYINT(1)类型的值为1解释为“true”,值为0解释为“false”,值为NULL解释为NULL。

总结

虽然BOOLEAN和TINYINT在MySQL中都可以表示布尔类型,但它们的行为略有不同。BOOLEAN实际上是TINYINT(1)的别名,它只能存储0、1和NULL三种值,通常将0解释为“false”,1解释为“true”,而NULL则表示值未知。而TINYINT类型实际上是一个可以存储8位有符号整数的类型,它可以存储任意整数,包括0和1,通常将0解释为“false”,非零值解释为“true”,NULL则表示值未知。因此,在使用BOOLEAN或TINYINT类型时,需要根据实际情况选择。如果只需要存储0或1或NULL这三种值,那么可以选择BOOLEAN类型;如果需要存储其他非零整数值,则需要选择TINYINT类型。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程