Hinzufügen einer neuen SQL-Spalte mit einem Standardwert


237

Ich suche nach der Syntax zum Hinzufügen einer Spalte zu einer MySQL-Datenbank mit dem Standardwert 0

Referenz

Antworten:


391

Versuche dies:

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

Aus der Dokumentation, auf die Sie verlinkt haben:

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

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

So finden Sie die Syntax für die column_definitionSuche etwas weiter unten auf der Seite:

column_definition-Klauseln verwenden für ADD und CHANGE dieselbe Syntax wie für CREATE TABLE. Siehe Abschnitt 12.1.17, „CREATE TABLE-Syntax“.

Und von der verlinkten Seite:

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]  

Beachten Sie dort das Wort DEFAULT.


4
Ich war besonders beeindruckt, wie gut diese Antwort ist, sowohl prägnant als auch gründlich. Ich wünschte, ich könnte sie erneut bewerten
Pseudonym

1
Boolean und Bool sind Synonyme, TINYINT(1)die weitaus effizienter sind als die Verwendung INT. Denken Sie daran, wenn Sie diese "richtige" Antwort verwenden
Clint Eastwood,

1
Wenn Sie eine boolesche Spalte mit dem Standardwert False hinzufügen müssen, können Sie Folgendes verwenden: ALTER TABLE table1 ADD COLUMN foo boolean not null default 0;
1man

"ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;" - In dieser 'SPALTE' ist kein Schlüsselwort erforderlich
Adithya Sai

36

So was?

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

Wenn der Standardwert> 0 ist, fügen Sie Anführungszeichen hinzu: ALTER TABLE tablenameADD new_col_nameINT NOT NULL DEFAULT '1';
Cyril Jacquart

4

Fügen Sie einfach default 0am Ende Ihrer ALTER TABLE <table> ADD COLUMN <column> <type>Erklärung hinzu


3

Tabellenbenutzer (user_id int unsigned PK, Benutzername varchar (32))

alter table users add column verified tinyint unsigned default 0

3

Dies funktioniert für den ENUM-Typ als Standardwert

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

2

Sie können dies versuchen,

ALTER TABLE table_name ADD column_name INT DEFAULT 0;

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

1
Können Sie das weiter erklären? Warum mussten Sie dieser Frage eine neue Antwort hinzufügen?
Nico Haase

0

Wenn Sie lernen, dass es hilfreich ist, eine GUI wie SQLyog zu verwenden , nehmen Sie die Änderungen mit dem Programm vor und sehen Sie dann auf der Registerkarte Verlauf die DDL-Anweisungen, die diese Änderungen vorgenommen haben.


0

Versuche dies :)

ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT NOT NULL DEFAULT 0;

0

Ein weiteres nützliches Schlüsselwort ist FIRST und AFTER, wenn Sie es an einer bestimmten Stelle in Ihrer Tabelle hinzufügen möchten.

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

AFTER barsollte * nach INT sein
vladiastudillo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.