MySQL'de bir sütunu yeniden adlandırma


242

Bu SQL ifadesini kullanarak MySQL topluluk sunucusunda 5.5.27 bir sütunu yeniden adlandırmaya çalışıyorum:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Ben de denedim

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

Ama diyor ki:

Hata: MySQL sunucu sürümünüze karşılık gelen Kılavuzu kontrol edin


Yanıtlar:


405

Aşağıdaki sorguyu kullanın:

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

Bu RENAMEişlev Oracle veritabanlarında kullanılır.

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

Oracle'ın sözdizimi için çift tırnak kullanılırken, MySQL için kullanılan geri çivilere dikkat edin. Ayrıca MySQL 8.0'ın ters tıklamaları kabul etmeyebileceğini unutmayın. Bu durumda, sorguyu backticks olmadan yürütün ve muhtemelen işe yarayacaktır.


@ lad2025 aşağıda bahsediyor, ancak söylediklerini eklemenin iyi olacağını düşündüm. Teşekkürler @ lad2025!

Yeniden RENAME COLUMNadlandırmanız gereken herhangi bir sütunu yeniden adlandırmak için MySQL 8.0 içinde kullanabilirsiniz .

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE Sözdizimi :

YENİDOĞAN KOLONU:

  • Bir sütun adını değiştirebilir ancak tanımını değiştiremez.

  • Bir sütunu tanımını değiştirmeden yeniden adlandırmak için CHANGE'tan daha uygun.


2
Aynı ada sahip sütunlarınız olabilir mi - veya neden veri türünün belirtilmesi gerekiyor?
Lealo

5
@Lealo Komutun dediği gibi, CHANGEbir tablodaki ve türündeki sütunu değiştirir. MYSQL dokümanlar devlet: Attributes present in the original definition but not specified for the new definition are not carried forward.. Yani tablo tanımlarını belirtmeniz gerekir, aksi takdirde bu sütun için kullanılmazlar. Yalnızca bir sütunun veri türünü değiştirmek istiyorsanız,newcolname
Rizky Fakkel

2
@ Tekrar haklısın. Oracle belgeleri; 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.Aaave düzenledi. Kahveye ihtiyacım var ..
Rizky Fakkel

1
Teşekkürler @Smogen! Bu garip. Backtick'lerin MySQL için varsayılan tırnak karakteri olması gerekiyordu. "Bunun yerine kullanmadığınızdan emin misiniz `?
Rizky Fakkel

2
MySQL ( MYSQL STATUSgösterileri mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper), ben Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...sorgu için olsun ALTER TABLE comment RENAME COLUMN thread_id TO threadId;. Ayrıca backticks eklemeyi denedim `. Sonunda kullandım CHANGE.
Reed

60

Sunucu sürümünde: 5.6.34 MySQL Topluluk Sunucusu

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;

80
kesinlikle DROP ve ADD kullanmayın. bunu yaparak tüm verilerinizi kaybedersiniz
tomazahlin

27

Gönderen MySQL 5.7 Referans Kılavuzuna .

Sözdizimi:

ALTER TABLE t1 DEĞİŞİM ab DATATYPE;

örneğin: için Müşteri TABLO SÜTUN sahip CUSTOMER_NAME , customer_street , customercity .

Ve biz değiştirmek istediğiniz customercity İÇİN customer_city :

alter table customer change customercity customer_city VARCHAR(225);

18

MySQL 8.0'dan kullanabilirsiniz

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE Sözdizimi :

YENİDOĞAN KOLONU:

  • Bir sütun adını değiştirebilir ancak tanımını değiştiremez.

  • Bir sütunu tanımını değiştirmeden yeniden adlandırmak için CHANGE'tan daha uygun.

DBFiddle Demosu


4

Aşağıdaki kodu kullanabilirsiniz:

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

2

MySQL'de sütun adını yeniden adlandır

alter table categories change  type  category_type varchar(255);


1

Sözdizimi: ALTER TABLE tablo_adı CHANGE eski_ sütun_adı yeni_ sütun_adı veri türü;

Tablo adı Öğrenci ve sütun adı Ad ise . Ardından, değiştirmek istiyorsanız Adı için FIRST_NAME'in

ALTER TABLE Student CHANGE Name First_Name varchar(20);

0

mysql sürüm 5 için

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


0

MySQL'de sorgunuz şöyle olmalıdır

ALTER TABLE table_name change column_1 column_2 Data_Type;

sorguyu Oracle'a yazdınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.