NULL vs DEFAULT NULL vs NULL DEFAULT在MYSQL列创建中为NULL?
问题描述:
下面的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;
非常感谢。
答
没有区别。 NULL DEFAULT NULL
是隐式默认值。
From the CREATE TABLE documentation:
- 如果没有指定NULL也不NOT NULL,则仿佛NULL已指定
From the "Data Type Default Values" chapter:
- 列被处理。如果列定义中不包括明确默认值,MySQL按如下方式确定默认值:如果列可以将NULL作为值,则该列将被定义为wi一个显式的DEFAULT NULL子句。
答
price DOUBLE NULL;
price
是双,并且可以为空,其默认值为null。
price DOUBLE DEFAULT NULL;
price
是一个double类型,可以为null,其默认值为null。
price DOUBLE NULL DEFAULT NULL;
price
是双,并且可以为空,其默认值为null。
“* price is a double and can not be null *”for the second expression is wrong。如果省略'NULL',则假定为NULL(请参阅我的手册中的引用) – 2014-09-22 07:00:36
@EJP对我来说似乎每个语句都是相同的。我仍然无法解压。 :) – Sylar 2014-09-22 07:21:20
@Sylar他们* *是平等的。 – EJP 2016-09-14 04:31:10