Zmień nazwę kolumny w MySQL

242

Próbuję zmienić nazwę kolumny na serwerze społeczności MySQL 5.5.27 za pomocą tego wyrażenia SQL:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Też próbowałem

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

Ale mówi:

Błąd: sprawdź Podręcznik, który odpowiada twojej wersji serwera MySQL

Michael Peter
źródło
możliwy duplikat Jak zmienić nazwę kolumny tabeli w MySQL
Joel Hinz

Odpowiedzi:

405

Użyj następującego zapytania:

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

RENAMEFunkcja jest używana w bazach danych Oracle.

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

Zwróć uwagę na backtyki używane w MySQL, podczas gdy w składni Oracle stosowane są podwójne cudzysłowy. Należy również pamiętać, że MySQL 8.0 może nie akceptować odwrotnych ustawień. W takim przypadku wykonaj zapytanie bez odwrotnego ciągu i prawdopodobnie zadziała.


@ lad2025 wspomina o tym poniżej, ale pomyślałem, że byłoby miło dodać to, co powiedział. Dziękuję @ lad2025!

Możesz użyć RENAME COLUMNw MySQL 8.0, aby zmienić nazwę dowolnej kolumny, której nazwę chcesz zmienić.

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE Składnia :

ZMIEŃ NAZWĘ KOLUMNY:

  • Może zmienić nazwę kolumny, ale nie jej definicję.

  • Wygodniej niż ZMIANA zmienić nazwę kolumny bez zmiany jej definicji.

Rizky Fakkel
źródło
2
Czy możesz mieć kolumny o tej samej nazwie - lub dlaczego trzeba podać typ danych?
Lealo
5
@Lealo Jak mówi polecenie, CHANGEzmienia kolumnę w tabeli i jej typ. Docs MYSQL stwierdzić: Attributes present in the original definition but not specified for the new definition are not carried forward.. Oznacza to, że musisz podać definicje tabel, w przeciwnym razie nie będą one używane w tej kolumnie. Jeśli chcesz tylko zmienić typ danych kolumny, po prostu pomińnewcolname
Rizky Fakkel
2
@Flimm masz znowu rację. Dokumenty 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 edytowany. Potrzebuję kawy ..
Rizky Fakkel
1
Dziękuję @Smogen! To dziwne. Wsteczne powinny być domyślnym znakiem cudzysłowu dla MySQL. Czy na pewno nie używałeś "zamiast `?
Rizky Fakkel
2
W MySQL ( MYSQL STATUSpokazuje mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper) dostaję Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...zapytanie ALTER TABLE comment RENAME COLUMN thread_id TO threadId;. Próbowałem także dodać backticks `. Skończyło się na tym CHANGE.
Reed,
60

W wersji Server: 5.6.34 MySQL Community Server

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;
Kanke
źródło
80
absolutnie nie używaj DROP i ADD. w ten sposób stracisz wszystkie dane
tomazahlin,
27

Z podręcznika MySQL 5.7 .

Składnia:

ZMIEŃ TABELĘ t1 ZMIANA ab DATATYPE;

na przykład: dla klienta TABELA mający COLUMN CUSTOMER_NAME , customer_street , customercity .

I chcemy zmienić customercity TO customer_city :

alter table customer change customercity customer_city VARCHAR(225);
Ashu_FalcoN
źródło
18

Z MySQL 8.0 możesz użyć

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE Składnia :

ZMIEŃ NAZWĘ KOLUMNY:

  • Może zmienić nazwę kolumny, ale nie jej definicję.

  • Wygodniej niż ZMIANA zmienić nazwę kolumny bez zmiany jej definicji.

DBFiddle Demo

Łukasz Szozda
źródło
4

Możesz użyć następującego kodu:

ALTER TABLE `dbName`.`tableName` CHANGE COLUMN `old_columnName` `new_columnName` VARCHAR(45) NULL DEFAULT NULL ;
sam
źródło
2

Zmień nazwę kolumny w mysql

alter table categories change  type  category_type varchar(255);
Dinesh Vaitage
źródło
1

Składnia: ALTER TABLE nazwa_tabeli ZMIEŃ stara_kolumna nowa nazwa_kolumny typ danych;

Jeśli nazwa tabeli to Student, a nazwa kolumny to Name . Następnie, jeśli chcesz zmienić nazwę na First_Name

ALTER TABLE Student CHANGE Name First_Name varchar(20);
mohimenul
źródło
0

dla mysql w wersji 5

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

nieznany
źródło
0

W mysql twoje zapytanie powinno być jak

ALTER TABLE table_name change column_1 column_2 Data_Type;

napisałeś zapytanie w Oracle.

Ish
źródło