我有三个值:0
,1
,NULL
。现在我想知道,该列的数据类型是什么?
但顺便说一句,NULL
是该列(在数据库中)的默认值,我实现了0
和1
形式参数(get方法) URL。像这样:
www.example.com/?q=param=0
然后
$var = isset($_GET['param']) ? $_GET['param'] : null;
然后
INSERT INTO table(col) values ($var);
答案 0 :(得分:11)
由于MySQL(8.0.16)和MariaDB(10.2.1)都实现了CHECK约束,我现在将使用
bool_val TINYINT UNSIGNED CHECK(bool_val <= 1)
或
bool_val TINYINT CHECK(bool_val IN(0,1))
BIT(1) NULL DEFAULT NULL
BIT(1)
需要1个字节的存储空间,与TINYINT(1)
相同。区别在于BIT(1)
仅接受值0
和1
(或b'0'
和b'1'
),而TINYINT(1) UNSIGNED
接受来自{{1}的值最多0
。 255
括号中定义的长度不会对可以存储的值产生任何影响。它只是客户的信息,如何显示值(例如,如果您使用TINYINT
)。
答案 1 :(得分:8)
TINYINT(1) UNSIGNED NULL
tinyint非常适合布尔人