2014-09-22 94 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