更改MySql Null和默认属性

更改MySql Null和默认属性,mysql,Mysql,我有一个具有以下属性的表: mysql> desc oc_product; +-------------------+---------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+--------

我有一个具有以下属性的表:

mysql> desc oc_product;
+-------------------+---------------+------+-----+---------------------+----------------+
| Field             | Type          | Null | Key | Default             | Extra          |
+-------------------+---------------+------+-----+---------------------+----------------+
| date_available    | date          | YES  |     | NULL                |                |
我感兴趣的是将属性
Null
设置为
NO
,将
Default
设置为
0000-00-00

我已经完成了
默认
->
0000-00-00
部分,使用了:

更改表oc_产品更改日期_可用日期_可用日期默认为“0000-00-00”

但是,我无法将
Null
更改为
NO

我尝试了以下查询:


更改表oc\u产品更改日期\u可用日期\u可用日期空号

在某些数据库中,您可以通过添加
null
notnull
来指定它是否可以为null:

ALTER TABLE oc_product MODIFY COLUMN date_available NOT NULL;
但我相信在MySQL中,您还需要指定整个字段类型,因此它将是:

ALTER TABLE oc_product MODIFY COLUMN date_available date NOT NULL;
如果您还想指定(或保留)默认值,您还需要添加该值。这就是MySQL的问题所在,您必须根据需要指定整个字段定义,而不仅仅是更改

ALTER TABLE oc_product MODIFY COLUMN date_available date NOT NULL DEFAULT '0000-00-00'
如果不需要更改列名,可以使用“修改”而不是“更改”。除此之外,他们是一样的。
ALTER TABLE
语法及其所有选项都有很好的文档记录,因此您可以在这里查看:

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

更改默认值并使其可为空

ALTER TABLE oc_product 
  CHANGE `date_available` `date_available` DATE DEFAULT '0000-00-00 00:00:00' NULL; 

我刚刚尝试了这个,虽然它确实将
Null
更改为
NO
,但它似乎将
默认值
更改为
Null
。我使用
change
而不是
MODIFY
,因为我使用的GUI就是这样输出的(sqlYOG)