Php 什么数据类型可以用来在mysql中放置标志(布尔值)?

Php 什么数据类型可以用来在mysql中放置标志(布尔值)?,php,mysql,sql,database,Php,Mysql,Sql,Database,我有一个数据库,其中有以下列: emp_id: INT(11) (PRIMARY KEY) FirstName: varchar(45) LastName: varchar(45) password: varchar(45) admin: ???? 我希望admin列是一个标志,因此该员工要么是admin(true),要么不是admin(false)。有人能告诉我在mysql表中为这个列分配什么数据类型吗 使用枚举类型。枚举可以有您定义的值,并且不能接受任何值,除非您为其定义。以下是示例 e

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

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

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

使用枚举类型。枚举可以有您定义的值,并且不能接受任何值,除非您为其定义。以下是示例

 enum('DENYED','NOT_ACCEPTED','ACCEPTED') COLLATE utf8_persian_ci DEFAULT 'NOT_ACCEPTED'

您应该能够将列声明为
TINYINT NOT NULL DEFAULT FALSE
(或
DEFAULT 0

插入将是
值(真,…
值(假,…
值(1,…
值(0,…

作为一个不带引号的文本,
TRUE
相当于1,
FALSE
相当于0,因为MySQL中没有纯布尔数据类型

您的应用程序将始终看到结果集中的列包含1或0

忽略括号中的数字,例如
TINYINT(1)
TINYINT(4)
。这是一项传统功能的一部分,它为应用程序提供了列中存储的值的预期宽度的提示…它对于显示终端上的固定宽度字体很有用,但今天的应用程序基本上忽略了这一点,并且该值对列的内容或存储要求没有任何改变.A
TINYINT
每行需要1字节的存储空间


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

MySQL
没有内部的
boolean
数据类型。您可以使用
TINYINT(1)
@RayonDabre这是如何工作的?TINYINT的默认值是什么,参数是什么?TINYINT(1)是否表示true和TINYINT(0)对于false?我将如何将数据插入此表?
插入表名(column1,column2,column3,…)值(value1,value2,value3,…)
@程序员您能给我一个关于我的答案的反馈吗?这个参数到底是什么?我输入了ENUM作为此列的数据类型,它说的是ENUM()。我应该在括号中输入什么?请给出SQL insert示例。@MikhailBatcer insert语句与任何其他VARCHAR字段类似,但该字段仅接受定义的值