MySQLのテーブルにフィールドを追加するSQLの書き方を解説

MySQLのテーブルにフィールドを追加する方法をご存じでしょうか。SQLが使えるデータベースではテーブル作成時にフィールドの構成を指定するので、フィールドを追加するにはテーブルの構造を変えなければなりません。

なんだか難しそう、と思えるかもしれませんが、そのようなことはありません。やり方さえ理解できればフィールドを追加するためのSQLを作れます。そこで今回は次からテーブルの構成を変更してフィールドを追加する方法について解説します。

そもそもフィールドとは

MySQLはオープンソースのリレーショナルデータベース管理システムで、MySQLから派生したmariadbもよく使われています。そしてMySQLはデータベースの管理にSQLを使用します。

SQLではデータベースに格納したデータをまとまった単位で処理できるのが特徴です。そして、SQLで扱う最も小さなデータの単位がフィールドです。まずはフィールドとはどんなものかについて紹介します。

MySQLのデータ構造

MySQLはオープンソースのデータベース管理ソフトで、WordPressなどのWebシステムにおけるデータ格納機能として広く利用されています。

MySQLのデータベースではデータを表計算ソフトのシートのようなテーブルに格納します。そして、表計算の表をテーブルに例えると、表計算ソフトの横列の1行分がレコードであり、レコードを構成するデータ1つ1つがフィールドです。

MySQLで扱うデータのまとまりと順に並べると次のようになります。

データベース > テーブル > レコード > フィールド

つまり、今回扱うフィールドとは、MySQLが扱うデータの最小単位を指す言葉です。

フィールドを追加するコマンドは?

MySQLはSQLを利用してデータの追加、修正、検索などを実施しますが、先ほど紹介したデータのまとまりを追加するSQLを順に紹介すると次のようになります。

データベース:CREATE DATABSE データベース名;
テーブル:CREATE TABLE テーブル名 (…. );
レコード:INSERT INTO テーブル名 VALUE( 値1, …. );

実は上記のようなフィールドのみを追加するSQLはありません。これはテーブルを作成する際に、テーブルの構造を定義しており、その定義に合わせてレコードを追加しているためで、フィールドを追加してしまうとテーブルの構造が変わってしまいます。

そのため特定のレコードのどこかにフィールドを1つ追加する、ということはできません。

フィールドの追加とはテーブルの構造を変えること

先ほど、特定のレコードにフィールを1つだけの追加はできないと説明しましたが、テーブルの構造全体を変更できればフィールドの追加が可能です。

SQLにはテーブルの構造を変えるコマンドが用意さえており、それを使うことでフィールドを追加できます。ただしこのコマンドを実行すると既に登録済の全てのレコードにも新しくフィールドが追加されます。

そのフィールドを検索に利用する場合は、後から一括でデータを登録するなどして、誤動作を防ぐ対策が必要です。

MySQLのテーブルの構造を変更する方法については、こちらの記事も参照してください。
【コピペOK】MySQLで列を追加する方法!色々なカラム追加の紹介

テーブルの構造を変えるSQL

先ほど紹介したようにMySQLにおけるテーブルとは、ちょうど表計算ソフトのシートのようなものです。横1列分に当たるレコードはSQLのINSERT文で追加したり、DELETE文で削除もできます。

ではテーブルにフィールドを追加したり削除するにはどうすればよいのでしょうか。SQLにはテーブルの構造そのものを修正するためのALTER TABLEコマンドがあるのでこれが使えます。

次からMySQLにいけるALTER TABLEコマンドの使い方について解説します。

ALTER TABLEコマンドの文法

ALTER TABLEはテーブルの構造を変更するSQLのコマンドで、基本的な文法は次のとおりです。

ALTER TABLE (テーブル名) (テーブル操作コマンド)

上記のテーブル操作コマンドは種類が多く、列の追加や削除、インデックスの作成や破棄など、テーブルに関わる多くの操作が可能です。

今回紹介しているフィールドの追加、および修正や削除なども、それぞれのテーブル操作コマンドを実行することで操作できます。

列を追加する

テーブルにフィールドを追加するとは横方向に1列を追加するということです。例えば、下記のようなテーブルがあったとします。

あらたにフィールドを追加して次のデータを格納することになりました。

この場合、1つのレコードだけにフィールドを追加したくてもできません。テーブルに列を追加して、そこに追加するデータを格納します。

このようにフィールドを追加する、ということはテーブルの構造を変更して列を1つ追加することです。

列を追加するコマンド

SQLのCREATE TABLEコマンドでフィールドを定義する場合、フィールド名とデータ型およびオプションを指定します。これらの情報は、列を追加する場合も指定しなければなりません。

SQLのALTER TABLEでフィールドを追加するには次のように指定します。

ALTER TABLE (テーブル名) ADD (追加するフィールド名) (フィールドのオプション)

例えば、既存のテーブルtable1に、整数型のflgというフィールドを追加する場合、次のコマンドを実行します。

 

 

ALTER TABLE ~ ADDの使い方

先ほど紹介したようにフィールドを追加するにはテーブルに列を追加しなければなりません。それはテーブルの構造を修正することです。そのためフィールドの追加にはSQLのALTER TABLE ~ ADDコマンドを使用します。

次からALTER TABLE ~ ADDの使い方について紹介します。

基本はテーブルの右端に追加する

特に位置を指定せずにMySQLのテーブルに列を追加した場合、テーブルの右端に1列分が追加されます。

SQLを使えば実際に格納される順番はバラバラでもSELECT文で表示する項目の順序を指定できるので、右端に格納されてもそれほど問題はありません。しかし、気になる場合は次から紹介する追加位置を指定するSQLを使用してください。

特定の位置にカラムを追加する

カラムを特定の位置に追加する場合、ALTER TABLE ~ ADDコマンドに続けて場所を指定するオプションを追加します。

特定のカラムの後に追加するALTER TABLE文の文法

ALTER TABLE (対象のテーブル名) ADD (追加するカラム名) (カラムの型) AFTER (追加する前のカラム名);

使用例

まとめ

これまで紹介したようにMySQLでフィールドを追加したくても、特定のレコードだけに追加はできません。フィールドを追加するならテーブル全体に列を1つ追加してください。

なお列を追加するSQLはALTER TABLE ~ ADDです。追加する場所の指定も可能なので、必要に応じてフィールドを追加するSQLを組んで実行してください。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?