我正在为系统创建数据库模式,我开始想知道MySQL中的Integer数据类型。我已经看到了,至少在Moodle中,数据类型有时是TINYINT(用于标记之类的东西),INT(用于id号)或BIGINT(用于几乎无限的AI值,如用户id)。
我想知道:这对实际数据库有何影响?如果我使用INT作为标志(例如1 =挂起,2 =正在处理,3 =正在处理,4 =处理)而不是TINYINT或BIGINT,它是否会产生影响?那么不设置约束呢? (再次,像一个标志,使用TINYINT(1)或TINYINT没有特定的数字)
答案 0 :(得分:4)
您提供的大小不会影响数据的存储方式。
因此INT(11)以与INT(3)相同的方式存储在磁盘上。
用你的例子
1 = pending, 2 = in process, 3 = revewing, 4 = processed
我会改用ENUM('pending', 'inprocess', 'revewing', 'processed')
。这使得它在代码和数据中可读,同时它提供与使用整数相同的速度。
答案 1 :(得分:3)
答案 2 :(得分:2)
您应该阅读有关different numeric datatypes的内容,并根据此做出决定。