Mysql 使用ALTERTABLE查询添加默认约束的标准方法是什么?

Mysql 使用ALTERTABLE查询添加默认约束的标准方法是什么?,mysql,standards,Mysql,Standards,我想在MySQL中创建表之后更改列的默认值。以下哪种查询是创建表后更改列默认值的标准方法 两种方法都有效 如果使用MODIFY COLUMN,则必须记住包括列数据类型以及该列上可能存在的其他选项,如NOT NULL、AUTO_INCREMENT或ZEROFILL。如果忘记了其中一个选项,则会将其从列定义中删除 这可能会产生意想不到的副作用。例如,更改列的默认值只是元数据更改,因此即使表很大,更改也是即时的。但将列的可空性更改为NOTNULL或从NOTNULL更改为NOTNULL需要重新构

我想在MySQL中创建表之后更改列的默认值。以下哪种查询是创建表后更改列默认值的标准方法

  • 两种方法都有效

    如果使用
    MODIFY COLUMN
    ,则必须记住包括列数据类型以及该列上可能存在的其他选项,如NOT NULL、AUTO_INCREMENT或ZEROFILL。如果忘记了其中一个选项,则会将其从列定义中删除

    这可能会产生意想不到的副作用。例如,更改列的默认值只是元数据更改,因此即使表很大,更改也是即时的。但将列的可空性更改为NOTNULL或从NOTNULL更改为NOTNULL需要重新构造表。因此,如果您不小心通过忽略该选项更改了列的可空性,您会发现自己在不必等待的情况下等待了数小时

    如果使用
    altercolumn。。。设置默认值
    ,您不必拼出所有这些列选项。它们保持不变。如果您只想更改默认值,则此操作更方便且不易出错


    至于哪一个是标准的,
    ALTER列。。设置默认值
    在ANSI/ISO SQL规范中
    MODIFY COLUMN
    是为了与Oracle兼容而对该标准进行的MySQL扩展。

    您能否提供一个链接,让我了解更多有关ANSI/ISO SQL规范的信息?SQL规范不是免费的,阅读起来非常困难。但有一本好书已经出版,可以翻译成更简单的语言:。这也可在网上获得:
    ALTER TABLE table_name 
    MODIFY attribute_name DATATYPE DEFAULT default_value;
    
    ALTER TABLE table_name 
    ALTER attribute_name SET DEFAULT default_value;