Ganti nama kolom di MySQL

242

Saya mencoba mengubah nama kolom di server komunitas MySQL 5.5.27 menggunakan ekspresi SQL ini:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Saya juga mencoba

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

Tetapi tertulis:

Kesalahan: periksa Manual yang sesuai dengan versi server MySQL Anda

Michael Peter
sumber
kemungkinan duplikat dari Cara mengganti nama kolom tabel di MySQL
Joel Hinz

Jawaban:

405

Gunakan kueri berikut:

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

The RENAMEFungsi digunakan dalam database Oracle.

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

Perhatikan backticks yang digunakan untuk MySQL, sedangkan tanda kutip ganda digunakan untuk sintaks Oracle. Perhatikan juga bahwa MySQL 8.0 mungkin tidak menerima backticks. Dalam hal ini, jalankan kueri tanpa backticks dan itu mungkin akan berfungsi.


@ Lad2025 menyebutkannya di bawah, tapi saya pikir akan lebih baik untuk menambahkan apa yang dia katakan. Terima kasih @ lad2025!

Anda dapat menggunakan RENAME COLUMNdi MySQL 8.0 untuk mengganti nama kolom apa pun yang perlu diganti namanya.

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Sintaks tabel ALTER :

RENAME COLUMN:

  • Dapat mengubah nama kolom tetapi tidak definisinya.

  • Lebih nyaman daripada MENGUBAH untuk mengganti nama kolom tanpa mengubah definisi.

Rizky Fakkel
sumber
2
Bisakah Anda memiliki kolom dengan nama yang sama - atau mengapa tipe data itu harus ditentukan?
Lealo
5
@ Lealo Seperti perintahnya, ubah CHANGEkolom pada tabel dan tipenya. Dokumentasi MYSQL menyatakan: Attributes present in the original definition but not specified for the new definition are not carried forward.. Berarti Anda harus menentukan definisi tabel atau mereka tidak akan digunakan untuk kolom itu. Jika Anda hanya ingin mengubah tipe data kolom, biarkan sajanewcolname
Rizky Fakkel
2
@ Flimm kamu benar lagi. Oracle docs; 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.Aaa dan diedit. Saya butuh kopi ..
Rizky Fakkel
1
@Smogen terima kasih! Itu aneh. Backticks seharusnya menjadi karakter kutipan default untuk MySQL. Apakah Anda yakin Anda tidak menggunakan "bukan `?
Rizky Fakkel
2
Di MySQL ( MYSQL STATUSpertunjukan mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper), saya mendapatkan Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...kueri ALTER TABLE comment RENAME COLUMN thread_id TO threadId;. Saya juga mencoba menambahkan backticks `. Saya akhirnya menggunakan CHANGE.
Reed
60

Dalam versi Server: 5.6.34 Server Komunitas MySQL

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;
Kanke
sumber
80
benar-benar tidak menggunakan DROP dan ADD. Anda akan kehilangan semua data dengan melakukan ini
tomazahlin
28

Dari Manual Referensi MySQL 5.7 .

Sintaks:

ALTER TABLE t1 MENGUBAH ab DATATYPE;

misal: untuk TABEL Pelanggan memiliki COLUMN customer_name , customer_street , customercity .

Dan kami ingin mengubah customercity TO customer_city :

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

Dari MySQL 8.0 dapat Anda gunakan

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Sintaks tabel ALTER :

RENAME COLUMN:

  • Dapat mengubah nama kolom tetapi tidak definisinya.

  • Lebih nyaman daripada MENGUBAH untuk mengganti nama kolom tanpa mengubah definisi.

Demo DBFiddle

Lukasz Szozda
sumber
4

Anda dapat menggunakan kode berikut:

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

Ganti nama kolom di mysql

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

Sintaks: ALTER TABLE table_name CHANGE datatype old_column_name new_column_name;

Jika nama tabel adalah Siswa dan nama kolom adalah Nama . Lalu, jika Anda ingin mengubah Nama menjadi First_Name

ALTER TABLE Student CHANGE Name First_Name varchar(20);
mohimenul
sumber
0

untuk versi mysql 5

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

tidak diketahui
sumber
0

Di mysql, kueri Anda harus seperti

ALTER TABLE table_name change column_1 column_2 Data_Type;

Anda telah menulis kueri di Oracle.

Ish
sumber