Đổi tên một cột trong MySQL


241

Tôi đang cố gắng đổi tên một cột trong máy chủ cộng đồng MySQL 5.5.27 bằng biểu thức SQL này:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Tôi cũng đã thử

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

Nhưng nó nói:

Lỗi: kiểm tra Hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn


Câu trả lời:


403

Sử dụng truy vấn sau:

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

Các RENAMEchức năng được sử dụng trong cơ sở dữ liệu Oracle.

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

Lưu ý các backticks được sử dụng cho MySQL, trong khi dấu ngoặc kép được sử dụng cho cú pháp của Oracle. Cũng lưu ý rằng MySQL 8.0 có thể không chấp nhận backticks. Trong trường hợp đó, thực hiện truy vấn mà không cần backticks và nó có thể sẽ hoạt động.


@ lad2025 đề cập đến nó bên dưới, nhưng tôi nghĩ thật tuyệt khi thêm những gì anh ấy nói. Cảm ơn bạn @ lad2025!

Bạn có thể sử dụng RENAME COLUMNtrong MySQL 8.0 để đổi tên bất kỳ cột nào bạn cần đổi tên.

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER BẢNG Cú pháp :

RENAME COLUMN:

  • Có thể thay đổi một tên cột nhưng không phải là định nghĩa của nó.

  • Thuận tiện hơn THAY ĐỔI để đổi tên một cột mà không thay đổi định nghĩa của nó.


2
Bạn có thể có các cột có cùng tên - hoặc tại sao kiểu dữ liệu mà nó phải được chỉ định?
Lealo

5
@Lealo Như lệnh nói, CHANGEthay đổi cột trên bảng và loại của nó. Trạng thái tài liệu MYSQL : Attributes present in the original definition but not specified for the new definition are not carried forward.. Có nghĩa là bạn phải xác định các định nghĩa bảng hoặc chúng sẽ không được sử dụng cho cột đó. Nếu bạn chỉ muốn thay đổi kiểu dữ liệu của một cột, chỉ cần bỏ quanewcolname
Rizky Fakkel

2
@Flimm bạn lại đúng. Tài liệu Oracle; 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.Aaaand đã chỉnh sửa. Tôi cần cà phê ..
Rizky Fakkel

1
Cảm ơn bạn @Smogen! Thật ki quặc. Backticks được coi là ký tự trích dẫn mặc định cho MySQL. Bạn có chắc chắn rằng bạn đã không sử dụng "thay vì `?
Rizky Fakkel

2
Trong MySQL ( MYSQL STATUSchương trình mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper), tôi nhận được Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...truy vấn ALTER TABLE comment RENAME COLUMN thread_id TO threadId;. Tôi cũng đã thử thêm backticks `. Tôi đã kết thúc bằng cách sử dụng CHANGE.
Sậy

60

Trong phiên bản Máy chủ: 5.6.34 Máy chủ Cộng đồng MySQL

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;

80
tuyệt đối không sử dụng DROP và ADD. bạn sẽ mất tất cả dữ liệu bằng cách làm điều này
tomazahlin

27

Từ MySQL 5,7 Reference Manual .

Cú pháp:

THAY ĐỔI BẢNG t1 THAY ĐỔI ab DATATYPE;

ví dụ: đối với BẢNG khách hàng có COLUMN customer_name , customer_street , customercity .

Và chúng tôi muốn thay đổi customercity ĐẾN customer_city :

alter table customer change customercity customer_city VARCHAR(225);

18

Từ MySQL 8.0 bạn có thể sử dụng

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER BẢNG Cú pháp :

RENAME COLUMN:

  • Có thể thay đổi một tên cột nhưng không phải là định nghĩa của nó.

  • Thuận tiện hơn THAY ĐỔI để đổi tên một cột mà không thay đổi định nghĩa của nó.

Trình diễn DBFiddle


4

Bạn có thể sử dụng mã sau đây:

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

2

Đổi tên tên cột trong mysql

alter table categories change  type  category_type varchar(255);


1

Cú pháp: ALTER TABLE table_name THAY ĐỔI old_column_name new_column_name datatype;

Nếu tên bảng là Sinh viên và tên cột là Tên . Sau đó, nếu bạn muốn thay đổi Tên thành First_Name

ALTER TABLE Student CHANGE Name First_Name varchar(20);

0

cho phiên bản mysql 5

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


0

Trong mysql truy vấn của bạn sẽ giống như

ALTER TABLE table_name change column_1 column_2 Data_Type;

bạn đã viết truy vấn trong Oracle.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.