MySQLでALTER TABLEを使ってテーブル構造を変更する方法【初心者向け】

MySQLで【ALTER TABLE】を使ってテーブル構造を変更する方法を初心者向けに解説した記事です。実際のテーブルを使って「テーブル名を変更」「フィールドを追加」「フィールドの変更」「フィールドを削除」の4つについて紹介します。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が1,000以上あります。

MySQLの初心者向けに、基本的な使い方を解説する記事です。

今回は、ALTER TABLEを使ってテーブル構造に変更・追加・削除といった操作を加える方法を紹介します。

ALTER TABLEを使うと、MySQLの既存のテーブルの定義(構造)を変更することができます。

なお本記事は、MySQLを扱うTechAcademyのPHPオンライン講座の内容をもとにしています。

 

今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

目次

本記事は下記の流れで解説していきます。

  1. ALTER TABLEを使ってテーブル名を変更する方法
  2. ALTER TABLEを使ってフィールドを追加する方法
  3. ALTER TABLEを使ってフィールドの変更をする方法
  4. ALTER TABLEを使ってフィールドを削除する方法

 

 

今回は、このようなデータの入ったuserというテーブルをもとに解説を進めます。

スクリーンショット 2015-01-19 20.05.55

 

20160620

 

田島メンター!テーブルを作成して、データを追加出来るようになったんですが、作成した後にテーブルの変更って出来るんですか?

 

20163020-2

 

作成したテーブルの内容の変更やフィールドの削除など出来るんだ。

 

20160620

 

後からでも全部作り直せる感じでしょうか?

 

20163020-2

 

そうだね。Sqliteなど簡易なデータベースは注意が必要だけど、普通のデータベースは後からでも変更できるんだ。変更の仕方を見てみよう!

 

1. ALTER TABLEを使ってテーブル名を変更する

まずは、userテーブルの名前を変えてみましょう。

テーブル名を変更するためのコマンドは次の通りです。

 

alter table  テーブル名 rename  新テーブル名;

 

わかりやすいように、まずはshow tables;を使ってテーブル名を表示させておきましょう。

 show tables;

スクリーンショット 2015-01-19 21.10.44

 

alter tableを使って、usersという名前に変えてみたいと思います。

alter table user rename users;

alter table user rename users;

「Query OK」と表示されれば変更完了です。

 

念のため、show tables;で確認してみましょう。

show tables;

show tables;

userからusersに変わっていますね。

これでテーブル名の変更ができました。

 

 

[PR] MySQLで挫折しない学習方法を動画で公開中

2. ALTER TABLEを使ってフィールドを追加する方法

テーブルの中にはいくつかフィールドがありますが、これを追加することができます。

フィールドを追加するためのコマンドは次の通りです。

 

alter table テーブル名 add フィールド名 データ型;

 

まずはわかりやすいように、現在のテーブルを表示させます。(テーブル名はusersに変わっています)

select * from users;

スクリーンショット 2015-01-19 21.50.10

 

今は、id・username・organization_id・email・password・login_num と、6つのフィールドがあります。

ここにたとえば、ユーザーの年齢=ageというフィールドを追加したいときは、次のように書きます。

alter table users add age int;

※ageは整数値を入れるため、データ型はintを使います

 

alter table users add age int;

Quory OKと出ましたね。

 

再度確認してみます。

select * from users;

select * from users;

ageフィールドが追加されていますね。
(※NULLとは、データが何も入っていないという意味です)

これでフィールドの追加ができました。

 

 

3. ALTER TABLEを使ってフィールドの変更をする方法

テーブル名だけではなく、フィールド1つ1つの名前も変更することができます。

フィールド名を変更するためのコマンドは次の通りです。

 

alter table テーブル名 change フィールド名 新フィールド名 データ型;

 

実際にやってみましょう。

さきほど追加したageをagesにしてみます。

alter table users change age ages int;

スクリーンショット 2015-01-21 17.20.01

 

実際に変わっているか確認しましょう。

select * from users;

スクリーンショット 2015-01-21 17.20.35

agesに変わっていますね。

これでフィールドの変更ができました。

 

 

今はフィールド名そのものを変更しましたが、フィールド名を変更せずにデータ型だけを変更することもできます。

その場合は、changeのかわりにmodifyを使って次のように書きます。

 

alter table テーブル名 modify フィールド名 データ型;

 

もし、変えたいフィールドのデータ型がわからない場合は「desc テーブル名」のコマンドで確認できます。

desc users;

desc users;

 

ちなみに、NULLは何もデータが入っていない状態を示しますが、プログラミングの世界ではあまり使わないほうがいいと言われています。

ですので、ここではnot nullの制約をつけ、いずれの場合もNULLが使われないようなデータ型に変更したいと思います。

alter table users modify ages int not null;

 

descでもう一度確認しましょう。

desc users;

NO

agesのフィールド名はそのままに、Nullの項目がYESからNOへ変わり、Nullが表示されない設定に変更されました。

 

usersテーブルをもう一度確認します。

select * from users;

select * from users;

agesの初期値に、Nullではなく0が入っています。

 

 

4. ALTER TABLEを使ってフィールドを削除する方法

最後は、フィールドを削除する方法をご紹介します。

削除するときは、dropを使ってこのように書きます。

 

alter table テーブル名 drop フィールド名;

 

さきほど作ったagesのフィールドを削除してみましょう。

alter table users drop ages;

スクリーンショット 2015-01-21 18.03.39

Query OKと表示されたら、usersテーブルを確認してみましょう。

select * from users;

スクリーンショット 2015-01-21 18.03.59

agesのフィールドがなくなっていますね。

このようにして、フィールドを削除することができました。

 

おわりに

MySQLでALTER TABLEを使ってテーブル構造を変更する方法は以上です。

今回はテーブル名の変更から、フィールドの追加・変更・削除までおこないました。データベースを運用していくなかでは必要に応じてこのように手を加えることがありますので、ぜひ覚えてみてくださいね。

 

20160620

 

alter文で変更や削除、追加など出来るんですねー。データと似てますね。

 

20163020-2

 

そうなんだ。SQLは大別すると、データベースのユーザー作成に関わるもの、テーブルなどの定義に関わるもの、データの検索や追加などの3種類になるんだ。

 

20160620

 

後から変更出来るんなら、最初にテーブルを作成するときは、適当でも大丈夫ですね!

 

20163020-2

 

たいていの場合は大丈夫だけど、データ量が多いと、時間がかかったり問題が起こることがあるよ。

 

MySQLを勉強していて、
・もっと効率的に勉強したい
・誰かに聞きながら学びたい
・自分でWebサービスを作りたい
と思ったことはないでしょうか?

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。