存储0,1,空值的最佳数据类型

时间:2015-12-25 01:07:57

标签: php mysql

我有三个值:01NULL。现在我想知道,该列的数据类型是什么?

但顺便说一句,NULL是该列(在数据库中)的默认值,我实现了01形式参数(get方法) URL。像这样:

www.example.com/?q=param=0

然后

$var = isset($_GET['param']) ? $_GET['param'] : null;

然后

INSERT INTO table(col) values ($var);

2 个答案:

答案 0 :(得分:11)

更新

由于MySQL(8.0.16)和MariaDB(10.2.1)都实现了CHECK约束,我现在将使用

bool_val TINYINT UNSIGNED CHECK(bool_val <= 1)

db<>fiddle

bool_val TINYINT CHECK(bool_val IN(0,1))

db<>fiddle

原始答案

我会使用Bit-Value Type - BIT

BIT(1) NULL DEFAULT NULL

BIT(1)需要1个字节的存储空间,与TINYINT(1)相同。区别在于BIT(1)仅接受值01(或b'0'b'1'),而TINYINT(1) UNSIGNED接受来自{{1}的值最多0255括号中定义的长度不会对可以存储的值产生任何影响。它只是客户的信息,如何显示值(例如,如果您使用TINYINT)。

答案 1 :(得分:8)

TINYINT(1) UNSIGNED NULL

tinyint非常适合布尔人