【问题标题】:Adding a new SQL column with a default value添加具有默认值的新 SQL 列
【发布时间】:2010-08-25 19:06:54
【问题描述】:

我正在寻找将列添加到默认值为 0 的 MySQL 数据库的语法

Reference

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    试试这个:

    ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;
    

    来自您链接到的文档:

    ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
       alter_specification [, alter_specification] ...
    
    alter_specification:
        ...
        ADD [COLUMN] (col_name column_definition,...)
        ...
    

    要查找column_definition 的语法,请在页面下方搜索一下:

    column_definition 子句对 ADD 和 CHANGE 使用与 CREATE TABLE 相同的语法。见Section 12.1.17, “CREATE TABLE Syntax”.

    从链接页面:

    column_definition:  
       data_type [NOT NULL | NULL] [DEFAULT default_value]
       [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]  
       [COMMENT 'string']  
       [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]  
       [STORAGE {DISK|MEMORY|DEFAULT}]  
       [reference_definition]  
    

    请注意此处的“默认”一词。

    【讨论】:

    • 我对这个答案的简洁和透彻感到特别震惊,希望我能再次投票
    • boolean 和 bool 是 TINYINT(1) 的同义词,这比使用 INT 更有效,使用此“正确”答案时请记住这一点
    • 如果需要添加默认值为False的布尔列,可以使用:ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
    • "ALTER TABLE table1 添加列 foo INT DEFAULT 0;" - 在这个'COLUMN'关键字不是必需的
    • 考虑添加NOT NULL。除非指定,否则具有默认值的列仍然可以为 NULL,这通常(但不总是)违背了默认值的目的。
    【解决方案2】:

    像这样?

    ALTER TABLE `tablename` ADD `new_col_name` INT NOT NULL DEFAULT 0;
    

    【讨论】:

    • 如果默认值>0,添加引号:ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT '1';
    【解决方案3】:

    表用户(user_id int unsigned PK,用户名 varchar(32))

    alter table users add column verified tinyint unsigned default 0
    

    【讨论】:

      【解决方案4】:

      如果您正在学习使用SQLyog 之类的 GUI 会有所帮助,请使用该程序进行更改,然后查看进行这些更改的 DDL 语句的“历史记录”选项卡。

      【讨论】:

        【解决方案5】:

        试试这个:)

        ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;
        

        【讨论】:

          【解决方案6】:

          这将适用于 ENUM 类型作为默认值

          ALTER TABLE engagete_st.holidays add column `STATUS` ENUM('A', 'D') default 'A' AFTER `H_TYPE`;
          

          【讨论】:

            【解决方案7】:

            只需在 ALTER TABLE <table> ADD COLUMN <column> <type> 语句的末尾添加 default 0

            【讨论】:

              【解决方案8】:

              你可以试试这个,

              ALTER TABLE table_name ADD column_name INT DEFAULT 0;
              

              【讨论】:

                【解决方案9】:
                ALTER TABLE my_table ADD COLUMN new_field TinyInt(1) DEFAULT 0;
                

                【讨论】:

                • 你能进一步解释一下吗?为什么需要为这个问题添加新答案?
                【解决方案10】:

                另一个有用的关键字是 FIRST 和 AFTER,如果您想将其添加到表格中的特定位置。

                ALTER TABLE `table1` ADD COLUMN `foo` AFTER `bar` INT DEFAULT 0;
                

                【讨论】:

                • AFTER bar 应该是 *after INT
                猜你喜欢
                • 1970-01-01
                • 2010-09-08
                • 1970-01-01
                • 2013-12-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-01-03
                相关资源
                最近更新 更多