icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

今回は、ALTER TABLEを使ってテーブル構造に変更・追加・削除といった操作を加える方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

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

実務でも、ALTER TABLEを使ってテーブル構造に変更・追加・削除し、Webアプリケーションのデータ処理を行うので、ぜひ学習してみてください。

目次

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

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

 

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

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

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

田島悠介

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

 

テーブル名を変更する際に利用するコマンド

テーブル名を変更する際には次のように操作します。

テーブル名を表示するコマンドは必須ではありませんが、名前が変更できたかを確認する方が安心です。

  1. テーブル名を表示
  2. テーブル名を変更

 

テーブル名一覧を表示するコマンド

テーブル名を変更する場合、show tables;を利用します。

show tables;

 

テーブル名を変更するコマンド

テーブル名を変更する場合、alter tableを利用します。

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

 

テーブルの中のデータを表示するコマンド

テーブルの中のデータを表示する場合、select を利用します。

select * from テーブル名;

 

データ型を確認するコマンド

テーブルのデータ型を確認するためには、descを利用します。

desc テーブル名;

 

ALTER TABLEを使ってテーブル名を変更してみよう

実際にALTER TABLEを使ってテーブル名を変更してみましょう。

 

テーブル名を表示

まずはshow tables;を使ってテーブル名を表示させておきましょう。

コマンド

 show tables;

実行結果

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

解説

show tables;というコマンドを実行すると、userというテーブルが表示されました。

 

テーブル名を変更

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

コマンド

alter table user rename users;

実行結果

alter table user rename users;

解説

alter table user rename users;というコマンドで、userテーブルをusersテーブルに名称変更しました。

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

 

テーブル名を再確認のため表示

show tablesを利用して、再度テーブル名を確認します。

コマンド

show tables;

実行結果

show tables;

解説

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

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

 

[PR] 未経験からWebエンジニアを目指す方法とは

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

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

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

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

 

テーブルの中のデータを表示

現在のテーブルの中身を表示させます。

コマンド

select * from users;

実行結果

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

解説

select * from users;では、テーブル名がusersのテーブルの中身を表示しています。

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

 

フィールドを追加する

フィールドを追加する方法を解説します。

コマンド

alter table users add age int;

実行結果

 

alter table users add age int;

alter table users add age int;では、ユーザーの年齢として、ageというフィールドを追加します。
age int;では、ageは整数値を入れるため、データ型はint型を使うという意味です。

int型というのは、整数を意味します。

 

テーブルの中身を再度表示する

テーブルの中身を再度確認してみます。

コマンド

select * from users;

実行結果

select * from users;

解説

select * from users;で、usersテーブルの中身が表示されました。

今回の実行結果では、ageフィールドが追加されています。

NULLとは、データが何も入っていないという意味です。

 

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

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

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

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

 

ageフィールドをagesフィールドに変更してみる

ここではageをagesにしてみます。

コマンド

alter table users change age ages int;

実行結果

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

解説

alter table users change age ages int;では、usersテーブルのageフィールドをagesフィールドに変更しています。

ages int;では、データ型int型を使うという意味です。

int型というのは、整数を意味します。

 

変更後の内容を確認

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

コマンド

select * from users;

実行結果

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

解説

select * from users;では、usersテーブルの中身を表示しています。

agesに変わっていますね。

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

 

データ型だけ変更する方法を実際に書いてみよう

ここでは、フィールド名を変更せずにデータ型だけを変更できます。

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

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

 

データ型を確認

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

コマンド

desc users;

実行結果

desc users;

解説

agesフィールドはint型のフィールドであることを確認できました。

NULLというのはデータが入っていない状態です。

NULLがYESというのは、標準状態でデータが入っていないのが普通ということを意味します。

 

NULLを利用しないように実際に変更してみよう

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

コマンド

alter table users modify ages int not null;

解説

alter table users modify ages int not null;では、データ型を変更するコマンドです。

基本的にはint型なのですが、not nullの部分でNULLを利用しないように指定しました。

 

再度確認表示を行う

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

コマンド

desc users;

実行結果

NO

解説

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

 

テーブルの中身を再度確認してみよう

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

コマンド

select * from users;

実行結果

select * from users;

解説

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

 

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

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

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

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

 

ALTER TABLEを使ってフィールドを削除してみる

agesのフィールドを削除してみましょう。

コマンド

alter table users drop ages;

実行結果

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

解説

Query OKと表示されたら、実行できています。

 

usersテーブルを確認

usersテーブルを確認しましょう。

コマンド

select * from users;

実行結果

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

解説

select * from users;でusersテーブルを確認すると、agesのフィールドが削除できています。

 

まとめ

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

ALTER TABLEを使ってテーブル名を変更しました。

ALTER TABLEを使ってフィールドを追加しました。

ALTER TABLEを使ってフィールドを変更しました。

ALTER TABLEを使ってフィールドを削除しました。

データベースを運用していく中では、必要に応じてこのように手を加えることがあります。

PHPでSQLを実行する方法も参考にしてみてくださいね。

大石ゆかり

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

田島悠介

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

大石ゆかり

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

田島悠介

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

 

PHPを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!