如果在表的一列中,我希望这些值是“是”,“否”或“可选”,那么我需要使用哪种数据类型?
所有选项占用相同的空间量,从而使性能等同于JOIN / etc。
BIT如果可能的值有可能改变,则不是最明智的选择。 CHAR(1)可以立即读取的IE:Y,N,O。 TINYINT对于要通过外键关联的表中的主键是一个不错的选择,并将描述性文本存储在另一列中。
BIT
CHAR(1)
TINYINT
CHAR(1)如果不使用外键关系,将是我的选择,TINYINT否则。 使用CHAR(1),拥有单个字符的自然主键是非常不可能的。如果您有2个以上以相同字符开头的单词,则假定基于前导字符的自然键会失败,并且如果标签需要更改,则会引起悲伤,因为该键也应该更改并永久存在(除非您懒惰并喜欢解释为什么代码没有遵循与其他代码相同的方案)。CHAR(1)还提供了TINYINT所提供的可能性的大约五分之一(假设上限为52个区分大小写的值)-人工/代理键可避免描述更改。