我有一个数据库,其中包含以下列:

emp_id: INT(11) (PRIMARY KEY)
FirstName: varchar(45)
LastName: varchar(45)
password: varchar(45)
admin: ????

我希望 admin 列是一个标志,因此该员工要么是管理员(真)要么不是管理员(假)。有人可以告诉我在 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) 。这是遗留功能的一部分,它为应用程序提供了关于存储在列中的值的预期宽度的提示......它对显示终端上的固定宽度字体很有用,但今天的应用程序在很大程度上被忽略了,这value 不会改变列的内容或它的存储要求。 TINYINT 每行需要 1 个字节的存储空间。

对于 bool 情况,通常不建议使用 ENUM,因为在幕后,枚举具有可能导致逻辑歧义的数值,因为值的“字符串”将隐式转换为它的整数索引(基于 1,而不是在某些情况下基于 0)。

关于php - 什么数据类型可用于在 mysql 中放置标志( bool 值)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34477805/

10-12 16:25
查看更多