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

NULL vs DEFAULT NULL vs NULL DEFAULT NULL в создании столбцов MYSQL?

Следующее определение таблицы sql иллюстрируется одним из операторов create table из моей базы данных MYSQL, разработанной бывшим разработчиком моей компании.

DROP TABLE IF EXISTS `classifieds`.`category_vehicles`;
CREATE TABLE `classifieds`.`category_vehicles`(
`adv_id_ref` BIGINT UNSIGNED NOT NULL,
`category_id_ref` TINYINT UNSIGNED NOT NULL,
`forsale_status` TINYINT (1) NOT NULL,
`vehicle_type_id_ref` TINYINT UNSIGNED NOT NULL,
`price` DOUBLE NULL DEFAULT NULL,
 PRIMARY KEY (`adv_id_ref`)
) ENGINE = INNODB CHARSET = latin1 COLLATE = latin1_swedish_ci ;

Посмотрите на инструкцию price DOUBLE NULL DEFAULT NULL,

Обычно я использую

price DOUBLE NULL;

если я хочу, чтобы этот столбец принимал значения NULL.

Итак, каковы различия между этими тремя утверждениями?

1) price DOUBLE NULL;

2) price DOUBLE DEFAULT NULL;

3) price DOUBLE NULL DEFAULT NULL;

Большое спасибо.

4b9b3361

Ответ 1

Нет никакой разницы. NULL DEFAULT NULL - неявное значение по умолчанию.

Из документации CREATE TABLE:

  • Если не указано ни NULL, ни NOT NULL, столбец обрабатывается так, как если бы был указан NULL

В главе "Значения по умолчанию типа данных" :

  • Если определение столбца не содержит явного значения DEFAULT, MySQL определяет значение по умолчанию следующим образом: Если столбец может принимать значение NULL как значение, столбец определяется с явным предложением DEFAULT NULL.

Ответ 2

price DOUBLE NULL;

price является двойным и может быть нулевым, а его значение по умолчанию равно null.

price DOUBLE DEFAULT NULL;

price является двойным и может быть нулевым, а его значение по умолчанию равно null.

price DOUBLE NULL DEFAULT NULL;

price является двойным и может быть нулевым, а его значение по умолчанию равно null.