php - 什么数据类型可用于在mysql中放置标志(布尔值)?

原文 标签 php mysql sql database

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

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

我希望admin列是一个标志,因此该雇员要么是管理员(true),要么不是管理员(false)。有人能告诉我在mysql表中给这个列分配什么数据类型吗?

最佳答案

您应该能够将列声明为TINYINT NOT NULL DEFAULT FALSE(或DEFAULT 0)。
插入将是VALUES (TRUE, ...VALUES (FALSE, ...VALUES(1, ...VALUES (0, ...TRUE
作为一个无引号的文本,FALSE相当于1,TINYINT(1)相当于0,因为mysql中没有纯布尔数据类型。
应用程序将始终在结果集中看到包含1或0的列。
忽略括号中的数字,例如TINYINT(4)TINYINT。这是遗留功能的一部分,它向应用程序提供了一些提示,告诉应用程序列中存储的值应该有多宽……它对于显示终端上的固定宽度字体很有用,但现在的应用程序基本上忽略了它,并且这个值不会改变列的内容或列的存储要求。ENUM每行需要1字节的存储空间。
对于布尔值,通常不建议使用,因为在幕后,枚举有可能导致逻辑模糊的数值,因为在某些上下文中,值的“字符串”将隐式转换为其整数索引(基于1,而不是基于0)。

相关文章:

javascript - 如何将String传递给onclick消息?

php - Joomla - 如何隐藏管理仪表板中的版本更新选项

php - mysqli_fetch_assoc()不返回任何东西

php - 更好的性能-MySQL临时表或直接读取CSV文件或其他内容?

mysql - 跨多个表优化INNER JOIN

php - 像Swoopo或Quibids这样的网站如何与所有游戏玩家保持联系

php - PHP:对MySQL数据库中的日期进行格式化和排序

mysql - SQL行列总和与数字之间的空格

mysql - MySQL帮助进行查询

sql - Golang的SQL包是否无法进行临时/探索性查询?