2014-09-22 91 views
12

下面的sql表定義說明了從我公司的一位前開發人員開發的MYSQL數據庫中創建表語句之一。NULL vs DEFAULT NULL vs NULL DEFAULT在MYSQL列創建中爲NULL?

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雙零DEFAULT NULL,

通常情況下,我使用

price雙零;

如果我想啓用該列來接受NULL值。

那麼這三個陳述之間有什麼區別呢?

1)price DOUBLE NULL;

2)price DOUBLE DEFAULT NULL;

3)price DOUBLE NULL DEFAULT NULL;

非常感謝。

回答

7
price DOUBLE NULL; 

price是雙,並且可以爲空,其默認值爲null。

price DOUBLE DEFAULT NULL; 

price是一個double類型,可以爲null,其默認值爲null。

price DOUBLE NULL DEFAULT NULL; 

price是雙,並且可以爲空,其默認值爲null。

+0

「* price is a double and can not be null *」for the second expression is wrong。如果省略'NULL',則假定爲NULL(請參閱我的手冊中的引用) – 2014-09-22 07:00:36

+0

@EJP對我來說似乎每個語句都是相同的。我仍然無法解壓。 :) – Sylar 2014-09-22 07:21:20

+0

@Sylar他們* *是平等的。 – EJP 2016-09-14 04:31:10