Wie kann ich die Position einer bestimmten vorhandenen Spalte in der MySQL- Tabelle ändern ?
Ex: Ich möchte die Spalte verschieben Benutzernamen stattdessen sein , nachdem alle Spalten von seiner aktuellen Position oder ich möchte es vor jeder bestimmten Spalte in meinem Tisch.
mytable
Ändern des Benutzernamens der Tabellenänderungsspalte Benutzername varchar (255) "" und fügen ihn dann so hinzu, dass er ""mytable
Ändern des Benutzernamens der Tabellenspaltenspalte Benutzername varchar (255) nach einer Spalte "" lautet.ALTER TABLE ... MODIFY
ist vorzuziehen, obwohlALTER TABLE ... CHANGE
funktioniert. Der Grund dafür ist, dass letzteres eine zusätzliche Funktion zum Ändern des Spaltennamens bietet, wodurch Sie mehr eingeben können (was fehleranfällig ist, da Sie möglicherweise versehentlich den Spaltennamen ändern :-)Danke Jungs für all eure Antwort, ich bin schon fertig damit.
ALTER TABLE tbl_user MODIFY gender char(1) AFTER username;
Nun, es ist so, als würde man seinen Tisch organisieren, oder? Sie möchten nicht, dass sich Ihr Primärschlüsselfeld in der letzten Reihenfolge Ihrer Tabelle befindet. Zumindest weiß ich, wie ich es konfigurieren kann, wenn ich jemals auf dieses Problem stoße. Ich versuche, mich in einer textbasierten Datenbank zu verwenden und verwende keine GUI für jetzt.
Nochmals vielen Dank Jungs :)
quelle
Verwenden Sie einfach diese Abfrage
alter table `admin` modify id int(11) first;
oder
alter table `admin` modify id int(11) after `some_column`;
quelle
ALTER TABLE ... MODIFY
Ändern Sie nur den Spaltentyp und die Reihenfolge, daher ist dies vorzuziehen,ALTER TABLE ... CHANGE
da auch das Ändern des Spaltennamens hinzugefügt wird (wodurch Sie mehr eingeben).Ihr SQL sollte folgendermaßen aussehen:
ALTER TABLE `Customers` MODIFY `UserName` INT (11) AFTER `Orders`
Getan! Eine Zeile ändert die Position und es gibt nichts anderes zu tun.
Ich rate von der Empfehlung von @ rahim-asgari ab
ALTER TABLE MYTABLE ADD MYFILED INT( 5 ) NOT NULL AFTER POSITION
, da Sie:Syntax:
ALTER TABLE `TableName` MODIFY `FieldToBeMoved` [SAME FIELD SETTINGS] [ACTION] `TargetPosition`
[SAME FIELD SETTINGS]
Bezieht sich auf die Konfiguration Ihres Feldes. TINYINT, VARCHAR, TEXT usw. Denken Sie daran, die Größe anzugeben. Ej.
varchar (255)
[ACTION]
Sie können ein Feld
BEFORE
oderAFTER
ein bestimmtes Feld verschieben.Ersetzen für
BEFORE
oderAFTER
entsprechend.BEISPIEL
Wenn dein...
Customers
UserName
UserName
die Einstellungen:int(11)
Orders
quelle
ALTER TABLE [tbl_name] MODIFY|CHANGE [column definition] [AFTER|BEFORE] [a_column]
beides würde funktionieren.MODIFY
Dies ist vorzuziehen, wenn Sie nur die Spaltenreihenfolge ändern, aber nicht umbenennen möchten. Außerdem können Sie NICHT mehrere Spalten in einer einzigen ALTER TABLE-Anweisung neu anordnen. IE, um ganzzahlige Spalten col1, col2, col3 neu anzuordnen, um in der Reihenfolge von col3, col2, col1 zu sein, müssen Sie tunALTER TABLE tbl_name MODIFY col3 int FIRST; ALTER TABLE tbl_name MODIFY col2 int AFTER col3;
quelle
Sie können die Reihenfolge der vorhandenen Spalten nicht ändern.
Sie können jedoch die Spalte löschen, in der Sie die Position ändern möchten, und diesen Befehl verwenden, um sie an der gewünschten Position hinzuzufügen.
ALTER TABLE `MYTABLE` ADD `MYFILED` INT( 5 ) NOT NULL AFTER `POSITION`
oder
um ein Feld am Anfang der Tabelle hinzuzufügen
ALTER TABLE `MYTABLE` ADD `MYFIELD` INT( 5 ) NOT NULL FIRST
quelle