Benennen Sie eine Spalte in MySQL um

240

Ich versuche, eine Spalte in MySQL Community Server 5.5.27 mit diesem SQL-Ausdruck umzubenennen:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Ich habe es auch versucht

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

Aber es heißt:

Fehler: Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht

Michael Peter
quelle
Mögliches Duplikat von Wie man eine Tabellenspalte in MySQL umbenennt
Joel Hinz

Antworten:

401

Verwenden Sie die folgende Abfrage:

ALTER TABLE tableName CHANGE `oldcolname` `newcolname` datatype(length);

Die RENAMEFunktion wird in Oracle-Datenbanken verwendet.

ALTER TABLE tableName RENAME COLUMN "oldcolname" TO "newcolname" datatype(length);

Beachten Sie die für MySQL verwendeten Backticks, während für die Oracle-Syntax doppelte Anführungszeichen verwendet werden. Beachten Sie auch, dass MySQL 8.0 möglicherweise keine Backticks akzeptiert. Führen Sie in diesem Fall die Abfrage ohne Backticks aus, und sie wird wahrscheinlich funktionieren.


@ lad2025 erwähnt es unten, aber ich dachte, es wäre schön, hinzuzufügen, was er sagte. Vielen Dank an lad2025!

Sie können die RENAME COLUMNin MySQL 8.0 verwenden, um jede Spalte umzubenennen, die Sie umbenennen müssen.

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE Syntax :

RENAME COLUMN:

  • Kann einen Spaltennamen ändern, aber nicht seine Definition.

  • Bequemer als ÄNDERN, um eine Spalte umzubenennen, ohne ihre Definition zu ändern.

Rizky Fakkel
quelle
2
Können Sie gleichnamige Spalten haben - oder warum muss der Datentyp angegeben werden?
Lealo
5
@Lealo Ändert, wie der Befehl sagt, CHANGEdie Spalte in einer Tabelle und ihren Typ. In den MYSQL-Dokumenten heißt es : Attributes present in the original definition but not specified for the new definition are not carried forward.. Das heißt, Sie müssen die Tabellendefinitionen angeben, sonst werden sie für diese Spalte nicht verwendet. Wenn Sie nur den Datentyp einer Spalte ändern möchten, lassen Sie einfach dennewcolname
Rizky Fakkel
2
@Flimm du hast wieder recht. Oracle-Dokumente; In MySQL, the quote character is the backtick. If the SQL mode ANSI_QUOTES is set, double quotes can also be used to quote the identifiers. In Oracle, identifiers are quoted using double quotation marks.Aaaund bearbeitet. Ich brauche Kaffee ..
Rizky Fakkel
1
Danke @Smogen! Das ist seltsam. Backticks sollen das Standard-Anführungszeichen für MySQL sein. Sind Sie sicher , dass Sie nicht verwenden "statt `?
Rizky Fakkel
2
In MySQL ( MYSQL STATUSShows mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper) bekomme ich Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...für die Abfrage ALTER TABLE comment RENAME COLUMN thread_id TO threadId;. Ich habe auch versucht, Backticks hinzuzufügen `. Am Ende habe ich verwendet CHANGE.
Reed
59

In der Serverversion: 5.6.34 MySQL Community Server

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;
Kanke
quelle
80
Verwenden Sie DROP und ADD auf keinen Fall. Sie werden alle Daten verlieren, indem Sie dies tun
Tomazahlin
27

Ab MySQL 5.7 Referenzhandbuch .

Syntax :

ALTER TABLE t1 CHANGE ab DATATYPE;

Beispiel: für Customer TABLE mit COLUMN customer_name , customer_street , customercity .

Und wir wollen uns ändern customercity TO customer_city :

alter table customer change customercity customer_city VARCHAR(225);
Ashu_FalcoN
quelle
18

Ab MySQL 8.0 können Sie verwenden

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE Syntax :

RENAME COLUMN:

  • Kann einen Spaltennamen ändern, aber nicht seine Definition.

  • Bequemer als ÄNDERN, um eine Spalte umzubenennen, ohne ihre Definition zu ändern.

DBFiddle Demo

Lukasz Szozda
quelle
4

Sie können folgenden Code verwenden:

ALTER TABLE `dbName`.`tableName` CHANGE COLUMN `old_columnName` `new_columnName` VARCHAR(45) NULL DEFAULT NULL ;
Sam
quelle
2

Benennen Sie den Spaltennamen in MySQL um

alter table categories change  type  category_type varchar(255);
Dinesh Vaitage
quelle
1

Syntax: ALTER TABLE Tabellenname CHANGE alter_spaltenname neuer_spaltenname datentyp;

Wenn Tabellenname : Student und Spaltenname ist Name . Wenn Sie dann den Namen in Vorname ändern möchten

ALTER TABLE Student CHANGE Name First_Name varchar(20);
Mohimenul
quelle
0

für MySQL Version 5

alter table *table_name* change column *old_column_name* *new_column_name* datatype();

Unbekannt
quelle
0

In MySQL sollte Ihre Anfrage wie folgt sein

ALTER TABLE table_name change column_1 column_2 Data_Type;

Sie haben die Abfrage in Oracle geschrieben.

Ish
quelle