Значения по умолчанию для типов данных varchar и int mysql

На скриншоте показаны 3 типичных определения типа данных: id (автоинкремент), заголовок и число.

1.- В чем разница между: none и NULL?
2.- Должен ли я выбирать as defined: '' для типов varchar, когда мне нужна пустая строка?
3.- Должен ли я устанавливать значение по умолчанию as defined: 0 для автоинкремента int типы?

введите здесь описание изображения


person Igor Parra    schedule 15.05.2012    source источник


Ответы (1)


Значение по умолчанию none означает отсутствие значения по умолчанию. Если значение не указано во вставке, запрос завершится с ошибкой «нет значения по умолчанию».

NULL — это фактическое значение NULL, означающее, что если при вставке не указано значение, столбец по умолчанию будет равен NULL (пустой). Для varchar вы можете установить значение по умолчанию '', но NULL лучше.

Типы int с автоинкрементом не должны иметь значения по умолчанию (по умолчанию: None), потому что оно всегда будет иметь значение.

person None    schedule 15.05.2012
comment
Чтобы уточнить, чтобы использовать NULL по умолчанию, столбец должен разрешать значения NULL. - person Marcus Adams; 15.05.2012
comment
Для целочисленных типов NULL будет вставлять 0 (ноль)? - person Igor Parra; 15.05.2012
comment
Маркус, ты прав - на вставке я отредактирую свой ответ. - person None; 15.05.2012
comment
Еще одна интересная вещь, на которую стоит обратить внимание: если вы отключите ALLOW NULL для столбца и не укажете значение по умолчанию (NONE), оно все равно будет использовать значение по умолчанию для типа (0 для INTEGER, '' для VARCHAR) для замены НУЛЕВЫЕ значения. - person Marcus Adams; 15.05.2012