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;
Большое спасибо.
Ответы
Ответ 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.