我有一个数据库,其中包含以下列:
emp_id: INT(11) (PRIMARY KEY)
FirstName: varchar(45)
LastName: varchar(45)
password: varchar(45)
admin: ????
我希望管理员列成为一个标志,因此该员工要么是管理员(true),要么不是管理员(false)。有人可以告诉我为 mysql 表中的这一列分配什么数据类型吗?
最佳答案
您应该能够将该列声明为TINYINT NOT NULL DEFAULT FALSE
(或DEFAULT 0
)。
插入内容为VALUES (TRUE, ...
) 或VALUES (FALSE, ...
) 或VALUES(1, ...
> 或 VALUES (0, ...
.
作为不带引号的文字,TRUE
相当于 1,FALSE
相当于 0,因为 MySQL 中没有纯 bool 数据类型。
您的应用程序将始终在结果集中看到包含 1 或 0 的列。
忽略括号中的数字,例如TINYINT(1)
或 TINYINT(4)
。这是遗留功能的一部分,该功能向应用程序提供了关于存储在列中的值的预期宽度的提示...它对于显示终端上的固定宽度字体很有用,但在很大程度上被当今的应用程序忽略了,而这值不会改变列的内容或其存储要求。 TINYINT
每行需要 1 个字节的存储空间。
对于 bool 情况,通常不建议使用 ENUM
,因为在幕后,枚举具有可能导致逻辑歧义的数值,因为值的“字符串”将被隐式转换在某些情况下,它是整数索引(从 1 开始,而不是从 0 开始)。
关于php - 什么数据类型可以用来在mysql中放置一个标志( bool 值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34477805/