【问题标题】:What's the difference between MySQL BOOL and BOOLEAN column data types?MySQL BOOL 和 BOOLEAN 列数据类型有什么区别?
【发布时间】:2011-06-12 20:13:39
【问题描述】:

我正在使用 MySQL 版本 5.1.49-1ubuntu8.1。它允许我定义两种不同数据类型的列:BOOLBOOLEAN。这两种类型有什么区别?

【问题讨论】:

    标签: mysql sqldatatypes


    【解决方案1】:

    它们都是 TINYINT(1) 的同义词。

    【讨论】:

    • 亚当所说的。 MySQL 中没有实际的 BOOLEAN 类型。
    【解决方案2】:

    正如其他 cmets 所确定的,它们是 TINYINT(1) 的同义词。

    *那么,他们为什么要区分 bool、boolean、tiny*int(1)?

    主要是语义。

    Bool 和 Boolean:MySQL 默认将它们转换为 tinyint 类型。根据撰写本文时的 MySQL 声明,“我们打算在未来的 MySQL 版本中根据标准 SQL 实现完整的布尔类型处理。”

    0 = 假 1 = 真

    TINYINT:占用一个字节;范围从 -128 到 +127;或者,0 - 256。


    在这个比较中经常提到: MySQL 5.0.3之后——位:使用8个字节,只存储二进制数据。

    【讨论】:

    • 这并不能真正回答问题。 BOOLBOOLEAN 有什么区别?
    • 之前的帖子已经确定两者都是 TINYINT(1) 的同义词。理想情况下,下一个问题是“那么,它们为什么要区分数据类型?”
    • @Sixthfore Bit: Uses 8 bytes and stores only binary data. 是不正确的信息。当您向表中添加一个位列时,它将在每条记录中占据一个完整的字节,而不仅仅是一个位。当您添加第二个位列时,它将存储在同一个字节中。第 9 位列将需要第二个字节的存储空间。
    【解决方案3】:

    我刚刚注意到的一件事 - 在 MySql 中将列定义为 BOOL 时,Spring Roo 正确生成 Java 代码以将值解组为布尔值,因此推测指定 BOOL 可以添加一些值,即使它只是本质上提示该列的预期用途。

    【讨论】:

      【解决方案4】:

      查看 MySQL 文档对数值类型的概述:

      http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

      【讨论】:

        猜你喜欢
        • 2011-03-02
        • 2011-09-19
        • 1970-01-01
        • 1970-01-01
        • 2011-07-07
        • 2012-07-22
        • 1970-01-01
        • 2018-08-07
        相关资源
        最近更新 更多