Rinomina una colonna in MySQL


242

Sto cercando di rinominare una colonna nel server di community MySQL 5.5.27 usando questa espressione SQL:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Ho anche provato

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

Ma dice:

Errore: consultare il manuale corrispondente alla versione del server MySQL


Risposte:


405

Usa la seguente query:

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

La RENAMEfunzione è utilizzata nei database Oracle.

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

Nota i backtick usati per MySQL, mentre le doppie virgolette sono usate per la sintassi di Oracle. Inoltre, MySQL 8.0 potrebbe non accettare backtick. In tal caso, eseguire la query senza backtick e probabilmente funzionerà.


@ lad2025 lo menziona di seguito, ma ho pensato che sarebbe stato carino aggiungere quello che ha detto. Grazie @ lad2025!

È possibile utilizzare RENAME COLUMNin MySQL 8.0 per rinominare qualsiasi colonna che è necessario rinominare.

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Sintassi ALTER TABLE :

COLONNA RENAME:

  • Può cambiare il nome di una colonna ma non la sua definizione.

  • Più conveniente di CHANGE per rinominare una colonna senza modificarne la definizione.


2
Puoi avere colonne con lo stesso nome - o perché è necessario specificare il tipo di dati?
Lealo,

5
@Lealo Come dice il comando, CHANGEcambia la colonna su una tabella e il suo tipo. La documentazione MYSQL affermano: Attributes present in the original definition but not specified for the new definition are not carried forward.. Ciò significa che è necessario specificare le definizioni della tabella o che non verranno utilizzate per quella colonna. Se vuoi solo cambiare il tipo di dati di una colonna, lascia semplicemente fuori ilnewcolname
Rizky Fakkel

2
@Flimm hai di nuovo ragione. Documenti 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 modificato. Ho bisogno di caffè ..
Rizky Fakkel,

1
Grazie @Smogen! È strano. I backtick dovrebbero essere il carattere di preventivo predefinito per MySQL. Sei sicuro di non aver usato "invece di `?
Rizky Fakkel,

2
In MySQL ( MYSQL STATUSspettacoli mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper), ottengo Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...per la query ALTER TABLE comment RENAME COLUMN thread_id TO threadId;. Ho anche provato ad aggiungere backtick `. Ho finito per usare CHANGE.
Reed

60

Nella versione Server: 5.6.34 MySQL Community Server

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;

80
assolutamente non usare DROP e ADD. perderai tutti i dati in questo modo
tomazahlin l'

28

Dal manuale di riferimento di MySQL 5.7 .

Sintassi:

ALTER TABLE t1 CHANGE ab DATATYPE;

ad esempio: per il cliente TABELLA avere COLONNA customer_name , customer_street , customercity .

E vogliamo cambiare customercity TO customer_city :

alter table customer change customercity customer_city VARCHAR(225);

18

Da MySQL 8.0 puoi usare

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Sintassi ALTER TABLE :

COLONNA RENAME:

  • Può cambiare il nome di una colonna ma non la sua definizione.

  • Più conveniente di CHANGE per rinominare una colonna senza modificarne la definizione.

DBFiddle Demo


4

Puoi usare il seguente codice:

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

2

Rinomina il nome della colonna in mysql

alter table categories change  type  category_type varchar(255);


1

Sintassi: ALTER TABLE table_name CHANGE old_column_name new_column_name tipo di dati;

Se il nome della tabella è Studente e il nome della colonna è Nome . Quindi, se si desidera modificare il nome in First_Name

ALTER TABLE Student CHANGE Name First_Name varchar(20);

0

per mysql versione 5

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


0

In mysql la tua query dovrebbe essere come

ALTER TABLE table_name change column_1 column_2 Data_Type;

hai scritto la query in Oracle.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.