Derzeit habe ich die folgende MySQL-Tabelle: Employees (empID, empName, department);
Ich möchte die Tabelle wie folgt ändern: Employees (empID, department, empName);
Wie kann dies mit ALTER
Anweisungen geschehen ?
Hinweis: Ich möchte nur die Spaltenpositionen ändern.
SELECT *
Anweisung. (Zugegeben, wenn die Reihenfolge der Werte wichtig ist, sollte man sie explizit in der Anweisung auflisten, aber vielleicht hat OP hier keine vollständige Kontrolle.)SELECT
Anweisung zuAFTER column
auch mit verwendet werden kannALTER TABLE ADD column
. (Für das nächste Mal fügen Sie einige Felder hinzu.)Antworten:
Wenn empName eine VARCHAR (50) -Spalte ist:
BEARBEITEN
Gemäß den Kommentaren können Sie dies auch tun:
Beachten Sie, dass die Wiederholung
empName
absichtlich ist. Sie müssen MySQL mitteilen, dass Sie denselben Spaltennamen beibehalten möchten.Sie sollten sich bewusst sein, dass beide Syntaxversionen spezifisch für MySQL sind. Sie funktionieren beispielsweise in PostgreSQL oder vielen anderen DBMS nicht.
Eine weitere Änderung: Wie von @Luis Rossi in einem Kommentar hervorgehoben, müssen Sie die geänderte Spaltendefinition unmittelbar vor dem
AFTER
Modifikator vollständig angeben . Die obigen Beispiele haben nurVARCHAR(50)
, aber wenn Sie andere Merkmale (wieNOT NULL
oder einen Standardwert) benötigen, müssen Sie diese ebenfalls einschließen. Konsultieren Sie die Dokumentation aufALTER TABLE
für weitere Informationen.quelle
COLUMN
Schlüsselwort inALTER TABLE
Anweisungen optional . Ich bevorzuge es, weil ich denke, dass es die Aussage lesbarer macht.NOT NULL DEFAULT 1
, dies geschieht direkt nach dem Spaltentyp im BeispielVARCHAR(50)
Spaltenposition ändern:
Wenn Sie es an die erste Position verschieben müssen, müssen Sie am Ende der Abfrage ALTER TABLE CHANGE [COLUMN] den Begriff FIRST verwenden:
quelle
phpMyAdmin bietet hierfür eine GUI in der Strukturansicht einer Tabelle. Aktivieren Sie diese Option, um die Spalte auszuwählen, die Sie verschieben möchten, und klicken Sie auf die Änderungsaktion am Ende der Spaltenliste. Sie können dann alle Spalteneigenschaften ändern und finden die Funktion "Spalte verschieben" ganz rechts auf dem Bildschirm.
Natürlich baut dies alles nur die Fragen in der perfekten Top-Antwort auf, aber GUI-Fans werden die Alternative vielleicht zu schätzen wissen.
meine phpMyAdmin version ist 4.1.7
quelle
Ich musste dies für eine Spalte ausführen, die in den späteren Phasen eines Produkts auf mehr als 10 Tabellen eingeführt wurde. Also schrieb ich dieses schnelle, unordentliche Skript, um den Befehl alter für alle 'relevanten' Tabellen zu generieren.
quelle