Dodanie nowej kolumny SQL z wartością domyślną


Odpowiedzi:


391

Spróbuj tego:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

Z dokumentacji, do której prowadziłeś link:

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

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

Aby znaleźć składnię column_definitionwyszukiwania nieco dalej w dół strony:

Klauzule definicji_kolumny używają tej samej składni dla ADD i CHANGE jak dla CREATE TABLE. Patrz Rozdział 12.1.17, „TWORZENIE Składni TABELI”.

I z połączonej strony:

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]  

Zwróć uwagę na słowo DEFAULT.


4
Szczególnie uderzyło mnie to, jak dobra jest ta odpowiedź, zarówno zwięzła, jak i dokładna, chciałbym móc ją jeszcze raz głosować
pseudonim

1
boolean i bool są synonimami, dla TINYINT(1)których jest o wiele wydajniejszy niż używanie INT, pamiętaj o tym, używając tej „poprawnej” odpowiedzi
Clint Eastwood

1
Jeśli chcesz dodać kolumnę logiczną z wartością domyślną False, możesz użyć: ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
1man

„ALTER TABLE tabela 1 DODAJ KOLUMNĘ foo INT DEFAULT 0;” - W tym słowie kluczowym „KOLUMNA” nie jest wymagane
Adithya Sai

36

Lubię to?

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

jeśli wartością domyślną jest> 0, dodaj cudzysłowy: ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT '1';
Cyril Jacquart

4

Po prostu dodaj default 0na końcu swojego ALTER TABLE <table> ADD COLUMN <column> <type>oświadczenia


3

użytkownicy tabeli (identyfikator_użytkownika int bez znaku PK, nazwa użytkownika varchar (32))

alter table users add column verified tinyint unsigned default 0

3

Działa to dla typu ENUM jako wartości domyślnej

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
Czy możesz to wyjaśnić dalej? Dlaczego musiałeś dodać nową odpowiedź na to pytanie?
Nico Haase,

0

Jeśli uczysz się, pomocne jest używanie GUI takiego jak SQLyog , dokonaj zmian za pomocą programu, a następnie zobacz kartę Historia dla instrukcji DDL, które dokonały tych zmian.



0

Kolejnym przydatnym słowem kluczowym jest PIERWSZE i PO, jeśli chcesz dodać je w określonym miejscu w tabeli.

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

PO barpowinno być * po INT
vladiastudillo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.