在MYSQL列创建中,NULL vs DEFAULT NULL vs NULL DEFAULT NULL?

时间:2014-09-22 06:45:13

标签: mysql sql

以下sql表定义说明了我的MYSQL数据库中的create table语句之一,该数据库由我公司的前开发人员开发。

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值。

那么这3个陈述之间有什么区别?

1)price DOUBLE NULL;

2)price DOUBLE DEFAULT NULL;

3)price DOUBLE NULL DEFAULT NULL;

非常感谢。

2 个答案:

答案 0 :(得分:16)

没有区别。 NULL DEFAULT NULL是隐式默认值。

From the CREATE TABLE documentation:

  • 如果既未指定NULL也未指定NOT NULL,则将列视为已指定NULL

From the "Data Type Default Values" chapter:

  • 如果列定义不包含显式DEFAULT值,则MySQL确定默认值,如下所示:如果列可以将NULL作为值,则使用显式DEFAULT NULL子句定义该列。

答案 1 :(得分:9)

price DOUBLE NULL;

price是一个double,可以为null,默认值为null。

price DOUBLE DEFAULT NULL;

price是一个double,可以为null,默认值为null。

price DOUBLE NULL DEFAULT NULL;

price是一个double,可以为null,默认值为null。