我们如何在 mysql 查询浏览器中添加 BOOLEAN 数据类型?

yuk*_*kti 5 mysql datatypes mysql-workbench

我正在尝试BOOLEAN在 mysql 工作台中使用 EDIT TABLE添加一列,但它会TINYINT在应用更改时自动更改为。

我怎样才能得到列BOOLEAN

ype*_*eᵀᴹ 10

BOOLBOOLEANTINYINTMySQL中的同义词。请参阅 MySQL 文档:数字类型概述

您可能想要使用BIT数据类型。

  • @yukti:不确定我是否理解您的评论要求。 (2认同)

Bil*_*win 5

根据标准 SQL,MySQL 不支持真正的布尔值。它分别使用整数值 1 和 0 表示真和假。它确实支持关键字truefalse,但这些被映射到整数值。

mysql> SELECT true, false;
+------+-------+
| TRUE | FALSE |
+------+-------+
|    1 |     0 |
+------+-------+
Run Code Online (Sandbox Code Playgroud)

它们确实被映射到整数:

mysql> SELECT true + 10;
+-----------+
| true + 10 |
+-----------+
|        11 |
+-----------+
Run Code Online (Sandbox Code Playgroud)

这确实意味着 MySQL 中的某些表达式更简单,例如计算某个值为真的行就像布尔表达式的 SUM() 一样简单,条件为真时为 1,否则为 0。

SELECT SUM(name = 'bill') FROM table;
Run Code Online (Sandbox Code Playgroud)

标准 SQL 不支持将布尔值用作整数,并且需要更详细的内容:

SELECT COUNT(CASE name WHEN 'bill' THEN 1 END) FROM table;
Run Code Online (Sandbox Code Playgroud)

正如其他答案已经指出的那样,您可以使用数据类型别名,BOOL但它会立即被替换为TINYINT(1)(MySQL 对其他数据类型执行类似的操作,例如REALSERIAL)。