你会在哪些情况下使用哪种?有什么区别吗?我通常使用持久性引擎来存储布尔值?
我正在为一个网站设计一个数据库,我需要使用布尔日期类型来存储2个状态,无论是真还是假.我正在使用MySQL.
在使用phpMyAdmin设计数据库时,我发现我同时拥有BOOLEAN数据类型和TINYINT数据类型.
我经历了不同的文章,有人说TINYINT和BOOLEAN一样,没什么区别.有人说BOOLEAN在MySQL中转换为TINYINT.
我的问题是,如果两者相同,为什么存在两个呢?应该只有一个.
以下是我读过的文章的参考:
http://www.careerride.com/MySQL-BOOL-TINYINT-BIT.aspx
http://dev.mysql.com/doc/refman/5.5/en/numeric-type -overview.html
如果某个商品有库存,我想制作一个真/假字段.
我想将它设置为布尔值(转换为tinyint(1)),1为库存,0为无库存.
我正在从供应商那里得到食物,所以我心想,"如果他们通过了多少人,那该怎么办?"
所以我想知道我是否插入了一个高于1的数字.我以为它默认为1.
令我惊讶的是,它允许我保持任何数字达到127,任何超过默认值为127.
有谁能解释为什么?
我的平台:
PHP和mySQL
我的情况:
我遇到了一种情况,我需要在表格的一列中存储用户选择的值.现在我的选择是:
我的问题:
所以我想知道,以上两种类型中的哪一种:
访问该列时,可以提高查询速度(为简单起见,请不要混淆其他查询或访问其他列).
是最有效的存储和访问数据的方式,为什么?
如果列被索引,那么访问速度如何变化?
我的理解是,由于char(1)和tinyint(1)只占用1个字节的空间,因此在这种情况下存储空间不会成为问题.然后剩下的就是访问速度.据我所知,数字索引比其他任何东西都更快,更有效.但我认为,这里的情况很难决定.肯定希望听到你对这一次的体验.
先感谢您.
哪一个更好,Tinyint在MyISAM表和MySQL 5.1中有0和1值或ENUM 0,1?
对于包含真/假值的字段,最佳做法是什么?
这些列可以定义为枚举('是','否')或tinyint(1).一个比另一个好/快吗?
使用enum('1','0')与enum('yes','no')是否更好(即,它是否将'yes'或'no'作为字符串写入每一行,以便数据库存储尺寸越来越大)?
在Ruby on Rails中,迁移中的以下代码tinyint(4)在MySQL中创建了一个类型列:
create_table :great_table do |t|
t.integer :step_position, :limit => 1 #tinyint
end
Run Code Online (Sandbox Code Playgroud)
我将如何创建类型的列tinyint(2)或tinyint(3)?
让我们假设我想保存datagrid行的数量,这可以是max.24因为每行是1小时.
要在数据库中保存行索引,tinyint字段就足够了.但是在我的脑海里,我还记得有些数据库是针对整数进行优化的吗?!
那么使用tinyint是否值得?
所以在C#中每当我从MSSQL数据库中检索一个tinyint时,我就使用了以下转换.
(int)(byte)reader["MyField"];
Run Code Online (Sandbox Code Playgroud)
但是,这个演员似乎在MySQL中不起作用.
我试过了什么
(byte)reader["MyField"];
Run Code Online (Sandbox Code Playgroud)
只是
(int)reader["MyField"];
Run Code Online (Sandbox Code Playgroud)
编辑1
例外
The specified cast is not valid.
Run Code Online (Sandbox Code Playgroud)
编辑2
这是数据类型.
{Name = "SByte" FullName = "System.SByte"}
Run Code Online (Sandbox Code Playgroud) 我用symfony2和doctrine用命令反向设计我的数据库:
php app/console doctrine:mapping:convert
php app/console doctrine:mapping:import
php app/console doctrine:generate:entities
Run Code Online (Sandbox Code Playgroud)
但我的字段被映射为布尔值而不是tinyint(2).
为什么它映射为布尔值?