デフォルト値で新しいSQL列を追加する


回答:


391

これを試して:

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句は、CREATE TABLEの場合と同じ構文をADDおよびCHANGEに使用します。セクション12.1.17「CREATE TABLE構文」を参照してください

そしてリンクされたページから:

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]  

そこにDEFAULTという単語があることに注意してください。


4
私は特に、この回答が簡潔で完全なものであり、もう一度賛成票を投じることができることを願っています
偽名

1
booleanとboolは同義語でTINYINT(1)あり、を使用するよりもはるかに効率的です。INTこの "正しい"回答を使用する場合はそのことを覚えておいてください
Clint Eastwood

1
デフォルト値がFalseのブール列を追加する必要がある場合は、次を使用できます。ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
2016年

"ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;" -この「COLUMN」キーワードでは必要ありません
Adithya Sai


4

ステートメントのdefault 0最後に追加するだけですALTER TABLE <table> ADD COLUMN <column> <type>


3

テーブルユーザー(user_id int署名なしPK、ユーザー名varchar(32))

alter table users add column verified tinyint unsigned default 0

3

これは、デフォルト値としてENUMタイプで機能します

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


1
ALTER TABLE my_table ADD COLUMN new_field TinyInt(1) DEFAULT 0;

1
それをさらに説明できますか?なぜこの質問に新しい回答を追加する必要があったのですか?
Nico Haase 2018

0

SQLyogのようなGUIを使用すると役立つ場合は、プログラムを使用して変更を加え、それらの変更を行ったDDLステートメントの[履歴]タブを確認してください。


0

これを試して :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;

0

別の有用なキーワードは、テーブルの特定の場所に追加する場合のFIRSTおよびAFTERです。

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

AFTER barは* INTの後でなければなりません
vladiastudillo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.