MySQLの列の名前を変更する


241

次のSQL式を使用して、MySQLコミュニティサーバー5.5.27の列の名前を変更しようとしています。

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

私も試しました

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

しかしそれは言う:

エラー:MySQLサーバーのバージョンに対応するマニュアルを確認してください


回答:


403

次のクエリを使用します。

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

このRENAME関数はOracleデータベースで使用されます。

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

MySQLにはバッククォートが使用されていますが、Oracleの構文には二重引用符が使用されています。また、MySQL 8.0はバックティックを受け入れない場合があることに注意してください。その場合は、バッククォートなしでクエリを実行すると、おそらく機能します。


@ lad2025は以下でそれについて言及していますが、私は彼が言ったことを追加した方がいいと思いました。@ lad2025ありがとうございます!

RENAME COLUMNMySQL 8.0のを使用して、名前を変更する必要のある列の名前を変更できます。

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE構文

列の名前を変更:

  • 列名は変更できますが、定義は変更できません。

  • 定義を変更せずに列の名前を変更するには、CHANGEよりも便利です。


2
同じ名前の列を使用できますか、またはなぜそれを指定する必要があるデータ型があるのですか?
リアロ2017

5
@Lealoコマンドが言うようCHANGEに、テーブルの列とそのタイプを変更します。MYSQLドキュメントの状態:Attributes present in the original definition but not specified for the new definition are not carried forward.。つまり、テーブル定義を指定する必要があります。指定しないと、その列には使用されません。列のデータ型のみを変更したい場合は、単にnewcolname
Rizky Fakkel

2
@Flimmあなたは再び正しいです。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が編集されました。私はコーヒー...必要
Rizky Fakkel

1
@Smogenありがとうございます!それは変です。バックティックは、MySQLのデフォルトの引用文字であると想定されています。"代わりに使用していません`か?
Rizky Fakkel

2
MySQL(MYSQL STATUSショーmysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper)ではError 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...、クエリを取得します ALTER TABLE comment RENAME COLUMN thread_id TO threadId;。また、バックティックを追加してみました`。私は結局使用しましたCHANGE
リード

60

サーバーバージョン:5.6.34 MySQL Community Server

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;

80
DROPとADDは絶対に使用しないでください。これを行うと、すべてのデータが失われます
tomazahlin 2017

27

以下からのMySQL 5.7リファレンスマニュアル

構文:

ALTER TABLE t1 CHANGE ab DATATYPE;

例:COLUMN customer_namecustomer_streetcustomercityを持つCustomer TABLEの場合。

そして、我々は、変更したいcustomercityを TO customer_city

alter table customer change customercity customer_city VARCHAR(225);

18

MySQL 8.0から使用できます

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE構文

列の名前を変更:

  • 列名は変更できますが、定義は変更できません。

  • 定義を変更せずに列の名前を変更するには、CHANGEよりも便利です。

DBFiddleデモ


4

次のコードを使用できます。

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

2

mysqlで列名を変更する

alter table categories change  type  category_type varchar(255);


1

構文:ALTER TABLE table_name CHANGE old_column_name new_column_nameデータ型;

テーブル名がStudentで、列名がNameの場合。次に、名前First_Nameに変更する場合

ALTER TABLE Student CHANGE Name First_Name varchar(20);

0

MySQLバージョン5の場合

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


0

mysqlでは、クエリは次のようになります

ALTER TABLE table_name change column_1 column_2 Data_Type;

Oracleでクエリを記述しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.