Подтвердить что ты не робот

Каково значение по умолчанию для поля, если не указано значение по умолчанию?

Надеюсь, это не глупый вопрос. Вы можете установить значение по умолчанию для всех переменных или функцию, когда она вставлена. но если поле не требуется вставлять и вы не допускаете нулевые значения, каково "пустое" значение, которое вы видите в phpMyAdmin? в запросе он возвращается как пустая строка и т.д.?

просто пытаясь понять это, я хочу запросить для всех записей, чтобы значение для определенного столбца в этой записи не было "пустым" или пустым или каким-либо другим.

спасибо.

4b9b3361

Ответ 1

Ссылаясь на руководство,

Для ввода данных для столбца NOT NULL, который не имеет явного значения DEFAULT, если оператор INSERT или REPLACE не содержит значения для столбец, или оператор UPDATE устанавливает столбец в NULL, MySQL обрабатывает столбец в соответствии с режимом SQL, действующим в данный момент:

  • Если строгий режим SQL не включен, MySQL устанавливает столбец в неявное значение по умолчанию для типа данных столбца.
  • Если включен строгий режим, возникает ошибка для транзакционных таблиц, и инструкция возвращается. Для нетранзационных таблиц, ошибка возникает, но если это произойдет для второй или следующей строки оператор с несколькими строками, предыдущие строки будут вставлены.

Итак, теперь может возникнуть вопрос, каковы неявные значения по умолчанию для разных типов данных столбцов? Вот вы:

Неявные значения по умолчанию определяются следующим образом:

  • Для числовых типов по умолчанию используется значение 0, за исключением того, что для типов с целым числом или с плавающей точкой, объявленных с помощью AUTO_INCREMENT
    атрибут, по умолчанию это следующее значение в последовательности.
  • Для типов даты и времени, отличных от TIMESTAMP, по умолчанию используется соответствующее значение "нуль" для этого типа. Для первой колонки TIMESTAMP в таблице значением по умолчанию является текущая дата и время. См. Раздел 10.3 "Типы даты и времени".
  • Для строковых типов, отличных от ENUM, значением по умолчанию является пустая строка. Для ENUM значением по умолчанию является первое значение перечисления.

Ответ 2

Нет значения по умолчанию, если вы не укажете один (т.е. если вы не определяете "ограничение по умолчанию" для рассматриваемого столбца).

Здесь приведен пример добавления значения по умолчанию в существующий столбец:

ALTER TABLE dbo.customer ALTER COLUMN contactname SET DEFAULT 'Unknown'

Вот пример создания таблицы со значением по умолчанию:

CREATE TABLE Books (
  ID SMALLINT NOT NULL,
  Name VARCHAR(40) NOT NULL,
  PubID SMALLINT NOT NULL DEFAULT 0
)

Хорошей практикой является объявление всех столбцов "не null" и предоставление соответствующих ограничений по умолчанию.

В приведенном выше примере "книг", если вы "вставляете" без указания PubID, PubID будет равен нулю.

В том же примере, если вы "вставляете" без указания идентификатора или имени... вы получите сообщение об ошибке.

Если вы хотите, чтобы MySQL автоматически назначал идентификатор, вместо этого используйте этот синтаксис:

CREATE TABLE Books (
  ID SMALLINT NOT NULL AUTO_INCREMENT,
  Name VARCHAR(40) NOT NULL,
  PubID SMALLINT NOT NULL DEFAULT 0
)

Ответ 3

Если вы хотите запретить null: -

alter table YOUR_TABLE modify column COLUMN varchar(255) not null default '';

В приведенном выше запросе будет отклонено значение null и назначить пустую строку, если значение не указано.
В phpmysqladmin, blank = empty.
Через PHP функция mysqli или функция mysql, null value is returned as null все еще.

Как только вы примените запрос, вы можете легко отфильтровать его, используя

select ... from YOUR_TABLE 
where COLUMN != "";        <-- no need to check is null
                           <-- because the first query already enforce not null

Однако лучше всего сделать это перед выполнением изменения: -

update YOUR_TABLE set COLUMN = ""
where COLUMN is null;