Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLのカラム名変更についてまとめています。

SQLのカラム名変更は、alter table。カラム名やNULL許可、デフォルト値なども変更可能

SQLでカラム名を変更するにはalter tableを使用します。alter table カラム名 renameでカラム名のリネーム、alter table カラム名 modifyでカラム属性の変更が可能です。alter table カラム名 changeでリネームと属性変更が同時におこなえます。

※以下、MySQLのサンプルデータベースEmployeesを使用しています。

SQLのカラム名変更はalter table ~ rename

実際にカラム名の変更をおこなってみましょう。

  1. employeesテーブルと同じ構造でemployees_copyテーブルを作成
  2. カラム内容を確認
  3. alter table ~ renameでlast_nameカラムをlast_name1カラムに名前変更
  4. カラム内容を確認して、リネームされたことを確認
mysql> create table employees_copy like employees;
Query OK, 0 rows affected (0.05 sec)

mysql> show columns from employees_copy;
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no     | int           | NO   | PRI | NULL    |       |
| birth_date | date          | NO   |     | NULL    |       |
| first_name | varchar(14)   | YES  |     | NULL    |       |
| last_name  | varchar(16)   | NO   |     | NULL    |       |
| gender     | enum('M','F') | NO   |     | NULL    |       |
| hire_date  | date          | NO   |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
6 rows in set (0.04 sec)

mysql> alter table employees_copy rename column last_name to last_name1;
Query OK, 0 rows affected (0.02 sec)

mysql> show columns from employees_copy;
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no     | int           | NO   | PRI | NULL    |       |
| birth_date | date          | NO   |     | NULL    |       |
| first_name | varchar(14)   | YES  |     | NULL    |       |
| last_name1 | varchar(16)   | NO   |     | NULL    |       |
| gender     | enum('M','F') | NO   |     | NULL    |       |
| hire_date  | date          | NO   |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

カラム名変更の機能は、SQL標準ではないため一部のデータベースエンジンによってコマンドが異なります。Oracle、postgreSQLではMySQLと同様alter table ~ renameでカラム名変更が可能です。

例えば、SQL Serverでは、ストアドプロシジャsp_renameを使ってカラム名変更をおこないます。

EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';

関連)列名の変更 (データベース エンジン) – SQL Server | Microsoft Docs

カラム名変更とカラム属性変更を同時におこなうには、alter table ~ change

カラム属性の変更は、alter table ~ modifyで指定したカラム属性の変更が可能です。以下は、employees_copyテーブルのlast_name1カラムの属性を、データ型varchar(20)、デフォルト値NULL、NULL許可=NOに指定する例です。

mysql> alter table employees_copy modify last_name1 varchar(20) NULL not NULL;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show columns from employees_copy;
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no     | int           | NO   | PRI | NULL    |       |
| birth_date | date          | NO   |     | NULL    |       |
| first_name | varchar(14)   | YES  |     | NULL    |       |
| last_name1 | varchar(20)   | NO   |     | NULL    |       |
| gender     | enum('M','F') | NO   |     | NULL    |       |
| hire_date  | date          | NO   |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

alter table ~ changeは、カラム名のリネームとカラム属性の変更を同時に行います。

以下は、employees_copyテーブルのlast_name1カラムをlast_nameにリネームし、データ型をvarchar(16)、デフォルト値をNULL、NULL許可=NOに変更するサンプルです。

mysql> alter table employees_copy change last_name1 last_name varchar(16) NULL not NULL;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show columns from employees_copy;
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no     | int           | NO   | PRI | NULL    |       |
| birth_date | date          | NO   |     | NULL    |       |
| first_name | varchar(14)   | YES  |     | NULL    |       |
| last_name  | varchar(16)   | NO   |     | NULL    |       |
| gender     | enum('M','F') | NO   |     | NULL    |       |
| hire_date  | date          | NO   |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

デフォルト値、NULL許可の部分は省略可能です。省略した場合は、デフォルト値=NULL、NULL許可=YESとなります。

まとめ

ポテパンダの一言メモ
  • SQLのカラム名変更はalter table ~ rename
  • alter table ~ changeで、カラム名変更とカラム属性の変更を同時におこなうことができる
  • SQLのカラム名変更はSQL標準ではないため、DBMSによりコマンドが異なる場合がある

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。