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


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.


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;

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);

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


4

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

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

2

Zmień nazwę kolumny w mysql

alter table categories change  type  category_type varchar(255);


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);

0

dla mysql w wersji 5

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


0

W mysql twoje zapytanie powinno być jak

ALTER TABLE table_name change column_1 column_2 Data_Type;

napisałeś zapytanie w Oracle.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.