Thêm một cột SQL mới với giá trị mặc định


Câu trả lời:


391

Thử cái này:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

Từ tài liệu mà bạn liên kết đến:

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

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

Để tìm cú pháp column_definitiontìm kiếm thêm một chút xuống trang:

Mệnh đề cột xác định sử dụng cùng một cú pháp cho THÊM và THAY ĐỔI như đối với CREATE TABLE. Xem Phần 12.1.17, Syntax BẢNG TẠO Cú pháp.

Và từ trang được liên kết:

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]  

Lưu ý từ DEFAULT ở đó.


4
Tôi đặc biệt ấn tượng với câu trả lời này tốt như thế nào, cả súc tích và kỹ lưỡng, ước gì tôi có thể nâng cao nó một lần nữa
Bút danh

1
boolean và bool là những từ đồng nghĩa TINYINT(1)hiệu quả hơn nhiều so với sử dụng INT, hãy nhớ rằng khi sử dụng câu trả lời "đúng" này
Clint Eastwood

1
Trong trường hợp bạn cần thêm một cột boolean với giá trị mặc định là Sai, bạn có thể sử dụng: ALTER TABLE bảng1 ADD COLUMN foo boolean không null default 0;
1man

"ALTER TABLE bảng1 THÊM THU NHẬP foo INT DEFAULT 0;" - Trong từ khóa 'COLUMN' này là không bắt buộc
Adithya Sai

36

Như thế này?

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

nếu mặc định là> 0, hãy thêm dấu ngoặc kép: ALTER TABLE tablenameADD new_col_nameINT KHÔNG NULL DEFAULT '1';
Cyril Jacquart

4

Chỉ cần thêm default 0vào cuối ALTER TABLE <table> ADD COLUMN <column> <type>tuyên bố của bạn


3

người dùng bảng (user_id int unsign PK, tên người dùng varchar (32))

alter table users add column verified tinyint unsigned default 0

3

Điều này sẽ làm việc cho loại ENUM làm giá trị mặc định

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

2

Bạn có thể thử điều này,

ALTER TABLE table_name ADD column_name INT DEFAULT 0;

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

1
Bạn có thể giải thích thêm? Tại sao bạn cần thêm một câu trả lời mới cho câu hỏi này?
Nico Haase

0

Nếu bạn đang học, thật hữu ích khi sử dụng GUI như SQLyog , thực hiện các thay đổi bằng chương trình và sau đó xem tab Lịch sử cho các câu lệnh DDL đã thực hiện các thay đổi đó.


0

Thử cái này :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;

0

Một từ khóa hữu ích khác là FIRST và SAU nếu bạn muốn thêm nó vào một vị trí cụ thể trong bảng của bạn.

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

SAU barnên * sau INT
vladiastudillo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.