Ответ 1
Это 2019 год! Это было отмечено правильно лет назад. Пожалуйста, посмотрите ответ пола Шпигеля прямо под этим, чтобы получить более современный ответ. #
TINYINT (1) НЕ ПОДПИСАНО NULL
tinyint идеально подходят для логических
У меня есть три значения: 0
, 1
, NULL
. Теперь я хочу знать, какой тип данных подходит для этого столбца?
Но путь, NULL
является значением по умолчанию для этого столбца (в базе данных), и я достигаю
1
параметра формы (get method) URL. Что-то вроде этого:
www.example.com/?q=param=0
И затем
$var = isset($_GET['param']) ? $_GET['param'] : null;
И затем
INSERT INTO table(col) values ($var);
TINYINT (1) НЕ ПОДПИСАНО NULL
tinyint идеально подходят для логических
Так как 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
BIT(1) NULL DEFAULT NULL
BIT(1)
требуется 1 байт памяти, такой же, как TINYINT(1)
. Разница в том, что BIT(1)
принимает только значения 0
и 1
(или b'0'
и b'1'
), а TINYINT(1) UNSIGNED
принимает значения от 0
до 255
. Длина, TINYINT
в скобках для TINYINT
, не влияет на значения, которые можно сохранить. Это только информация для клиентов, как отобразить значения (например, если вы используете ZEROFILL
).