Menambahkan kolom SQL baru dengan nilai default

237

Saya mencari sintaks untuk menambahkan kolom ke database MySQL dengan nilai default 0

Referensi

Matt Elhotiby
sumber

Jawaban:

391

Coba ini:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

Dari dokumentasi yang Anda tautkan ke:

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
   alter_specification [, alter_specification] ...

alter_specification:
    ...
    ADD [COLUMN] (col_name column_definition,...)
    ...

Untuk menemukan sintaks untuk column_definitionpencarian sedikit lebih jauh ke bawah halaman:

klausa column_definition menggunakan sintaksis yang sama untuk ADD dan CHANGE seperti untuk CREATE TABLE. Lihat Bagian 12.1.17, “CREATE TABLE Syntax”.

Dan dari halaman tertaut:

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]  

Perhatikan kata DEFAULT di sana.

Mark Byers
sumber
4
Saya terutama dikejutkan oleh seberapa baik jawaban ini, baik ringkas dan menyeluruh, berharap saya bisa membesarkannya lagi
Nama samaran
1
boolean dan bool adalah sinonim TINYINT(1)yang jauh lebih efisien daripada menggunakan INT, ingatlah saat menggunakan jawaban "benar" ini
Clint Eastwood
1
Jika Anda perlu menambahkan kolom boolean dengan nilai default False, Anda dapat menggunakan: ALTER TABEL tabel1 TAMBAHKAN KOLOM foo boolean bukan nol default 0;
pria
"ALTER TABEL table1 TAMBAHKAN KOLOM foo INT DEFAULT 0;" - Dalam kata kunci 'COLUMN' ini tidak diperlukan
Adithya Sai
36

Seperti ini?

ALTER TABLE `tablename` ADD `new_col_name` INT NOT NULL DEFAULT 0;
Lekensteyn
sumber
jika standarnya adalah> 0, tambahkan kutipan: ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT '1';
Cyril Jacquart
4

Cukup tambahkan default 0di akhir ALTER TABLE <table> ADD COLUMN <column> <type>pernyataan Anda

Eton B.
sumber
3

pengguna tabel (user_id int unsigned PK, username varchar (32))

alter table users add column verified tinyint unsigned default 0
Jon Black
sumber
3

Ini akan bekerja untuk tipe ENUM sebagai nilai default

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

Anda dapat mencoba ini,

ALTER TABLE table_name ADD column_name INT DEFAULT 0;
itzmebibin
sumber
1
ALTER TABLE my_table ADD COLUMN new_field TinyInt(1) DEFAULT 0;
sandeep kumar
sumber
1
Bisakah Anda jelaskan lebih lanjut? Mengapa Anda perlu menambahkan jawaban baru untuk pertanyaan ini?
Nico Haase
0

Jika Anda belajar bahwa menggunakan GUI seperti SQLyog sangat membantu , buat perubahan menggunakan program lalu lihat tab History untuk pernyataan DDL yang membuat perubahan itu.

Max Toro
sumber
0

Coba ini :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;
MAnoj Sarnaik
sumber
0

Kata kunci lain yang bermanfaat adalah PERTAMA dan SETELAH jika Anda ingin menambahkannya di tempat tertentu di tabel Anda.

ALTER TABLE `table1` ADD COLUMN `foo` AFTER `bar` INT DEFAULT 0;
Roman Rabinovich
sumber
SETELAH barharus * setelah INT
vladiastudillo