我有一个数据库,其中包含以下列:
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/