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アプリケーションのデータ処理を行うので、ぜひ学習してみてください。
目次
- テーブル名を変更する際に利用するコマンド
- ALTER TABLEを使ってテーブル名を変更してみよう
- ALTER TABLEを使ってフィールドを追加する方法
- ALTER TABLEを使ってフィールドの変更をする方法
- ALTER TABLEを使ってフィールドを削除する方法
- まとめ
- PHPを学習中の方へ
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。
今回は、このようなデータの入ったuserというテーブルをもとに解説を進めます。
田島メンター!テーブルを作成して、データを追加できるようになったんですが、作成した後にテーブルの変更ってできるんですか?
作成したテーブルの内容の変更やフィールドの削除などできるんだ。
後からでも全部作り直せる感じでしょうか?
そうだね。SQLiteなど簡易なデータベースは注意が必要だけど、普通のデータベースは後からでも変更できるんだ。変更の仕方を見てみよう!
テーブル名を変更する際に利用するコマンド
テーブル名を変更する際には次のように操作します。
テーブル名を表示するコマンドは必須ではありませんが、名前が変更できたかを確認する方が安心です。
- テーブル名を表示
- テーブル名を変更
テーブル名一覧を表示するコマンド
テーブル名を変更する場合、show tables;を利用します。
show tables;
テーブル名を変更するコマンド
テーブル名を変更する場合、alter tableを利用します。
alter table テーブル名 rename 新テーブル名;
テーブルの中のデータを表示するコマンド
テーブルの中のデータを表示する場合、select を利用します。
select * from テーブル名;
データ型を確認するコマンド
テーブルのデータ型を確認するためには、descを利用します。
desc テーブル名;
ALTER TABLEを使ってテーブル名を変更してみよう
実際にALTER TABLEを使ってテーブル名を変更してみましょう。
テーブル名を表示
まずはshow tables;を使ってテーブル名を表示させておきましょう。
コマンド
show tables;
実行結果
解説
show tables;というコマンドを実行すると、userというテーブルが表示されました。
テーブル名を変更
alter tableを使って、usersという名前に変えてみたいと思います。
コマンド
alter table user rename users;
実行結果
解説
alter table user rename users;というコマンドで、userテーブルをusersテーブルに名称変更しました。
「Query OK」と表示されれば変更完了です。
テーブル名を再確認のため表示
show tablesを利用して、再度テーブル名を確認します。
コマンド
show tables;
実行結果
解説
userからusersに変わっています。
これでテーブル名の変更ができました。
ALTER TABLEを使ってフィールドを追加する方法
テーブルの中にはいくつかフィールドがありますが、新しいフィールドを追加できます。
フィールドを追加するためのコマンドは次の通りです。
alter table テーブル名 add フィールド名 データ型;
テーブルの中のデータを表示
現在のテーブルの中身を表示させます。
コマンド
select * from users;
実行結果
解説
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;では、ユーザーの年齢として、ageというフィールドを追加します。
age int;では、ageは整数値を入れるため、データ型はint型を使うという意味です。
int型というのは、整数を意味します。
テーブルの中身を再度表示する
テーブルの中身を再度確認してみます。
コマンド
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;
実行結果
解説
alter table users change age ages int;では、usersテーブルのageフィールドをagesフィールドに変更しています。
ages int;では、データ型int型を使うという意味です。
int型というのは、整数を意味します。
変更後の内容を確認
実際に変わっているか確認しましょう。
コマンド
select * from users;
実行結果
解説
select * from users;では、usersテーブルの中身を表示しています。
agesに変わっていますね。
これでフィールドの変更ができました。
データ型だけ変更する方法を実際に書いてみよう
ここでは、フィールド名を変更せずにデータ型だけを変更できます。
その場合は、changeのかわりにmodifyを使って次のように書きます。
alter table テーブル名 modify フィールド名 データ型;
データ型を確認
変えたいフィールドのデータ型がわからない場合は「desc テーブル名」のコマンドで確認できます。
コマンド
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;
実行結果
解説
agesのフィールド名はそのままに、NULLの項目がYESからNOへ変わり、NULLが表示されない設定に変更されました。
テーブルの中身を再度確認してみよう
usersテーブルをもう一度確認します。
コマンド
select * from users;
実行結果
解説
agesの初期値に、NULLではなく0が入っています。
ALTER TABLEを使ってフィールドを削除する方法
ここでは、フィールドを削除する方法をご紹介します。
削除するときは、dropを使って次のように書きます。
alter table テーブル名 drop フィールド名;
ALTER TABLEを使ってフィールドを削除してみる
agesのフィールドを削除してみましょう。
コマンド
alter table users drop ages;
実行結果
解説
Query OKと表示されたら、実行できています。
usersテーブルを確認
usersテーブルを確認しましょう。
コマンド
select * from users;
実行結果
解説
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アプリケーション開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!