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

SQLでテーブルを作成する際には、必ず項目(カラム)の設定が必要dす。

この記事では、項目の作成方法から追加方法、オプションの設定方法などをていねいに解説します。

ぜひこの記事を参考に、項目の追加方法を知ってください!

項目(カラム)を作成する方法

まず、項目を作成するにはテーブル作成時に次のように記述します。

CREATE TABLE テーブル名(カラム名1 カラム定義, カラム名2 カラム定義, カラム名3 カラム定義, …);

項目は、「項目の名前(カラム名)」と「その定義(カラム定義)」を記述することで、追加作成です。

基本的に、このテーブル作成・項目作成はどのDBMSでも同じようになります。

では、サンプルで実際に項目を作成してみましょう。

ここでは、下記のように ユーザーID、名前、住所 の3つの項目があるテーブルを作成しました。

mysql> CREATE TABLE sample_table(user_id int, name varchar(20), address varchar(20));
Query OK, 0 rows affected (0.01 sec)

ちゃんとテーブルと項目が作成されたか、確認してみましょう。

mysql> SHOW COLUMNS FROM sample_table;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| user_id | int         | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| address | varchar(20) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

テーブルとその項目が作成されているのがわかります。

これで項目作成は完了です。

では次の章で項目追加を行う方法について見てみましょう。

項目追加を途中からする時は「ALTER TABLE ADD」を使う

項目を作り忘れてしまったのですが、テーブル作成後に追加できますか?

はい、可能です!実際に項目を後から追加してみましょう。

テーブル作成後に途中から項目を追加したい場合もあるでしょう。

項目を途中から追加するには、 ALTER TABLE ADD文 を使います。

記述方法は次の通りです。

ALTER TABLE テーブル名 ADD カラム名 カラム定義 [FIRST | AFTER カラム名];

ADD の後に、追加したい項目名とその定義を記述します。

テーブルの一番最後に項目を追加したい場合は「カラム定義」まで記述すればOKです。

もし、何かの項目の前もしくは後に追加したい場合は、 FIRSTもしくは AFTER を記述し、該当項目名を記述します。

では実際に、先ほどのテーブルに項目追加してみましょう。

MySQLで項目追加

まずは、テーブルの一番最後に項目を追加してみます。

mysql> ALTER TABLE sample_table ADD tel varchar(20);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

テーブル定義を確認してみると、次のようにテーブルの最後に追加した項目が表示されているはずです。

mysql> SHOW COLUMNS FROM sample_table;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| user_id | int         | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| address | varchar(20) | YES  |     | NULL    |       |
| tel     | varchar(20) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

では、次にテーブルの任意の場所に項目を追加してみましょう。

mysql> ALTER TABLE sample_table ADD age int AFTER name;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

上記のSQLクエリを実行することで、name項目 の後ろに age項目 が追加されているはずです。

実際にテーブル定義を確認してみましょう。

mysql> SHOW COLUMNS FROM sample_table;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| user_id | int         | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| age     | int         | YES  |     | NULL    |       |
| address | varchar(20) | YES  |     | NULL    |       |
| tel     | varchar(20) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

このように、指定した箇所に項目追加ができました!

PostgreSQLで項目追加

PostgreSQLで項目追加を行うには、どうすれば良いですか?

MySQL同様に、ALTER TABLE ADD文を使えばOKです!

PostgreSQLで項目追加を行う際も、ALTER TABLE ADD文を使えば問題ありません。

ALTER TABLE テーブル名 ADD カラム名 カラム定義;

ただし、MySQLとは異なり AFTER / FIRST は使えません

そのため、項目追加をする際には必ずテーブルの最後に追加されます。

どうしても項目を任意の位置に追加したい場合は、項目を追加した新規テーブルを作り、そこにデータを挿入し直す、といった方法をとることになるでしょう。

Oracleで項目追加

Oracleの場合も、MySQLと同じですか?

MySQLよりはPostgreSQLと同様で、AFTER / FIRSTが使えません。

Oracleで項目追加を行う際も、下記の ALTER TABLE ADD文 を使えば問題ありません。

ALTER TABLE テーブル名 ADD カラム名 カラム定義;

また、任意の位置に追加はできません。

項目追加を複数するには?

項目追加する数を複数にしたい場合は、ADD以降の記述をカンマ区切りでつなぐことで実行可能です。

記述方法は次のようになります。

ALTER TABLE テーブル名 ADD カラム名1 カラム定義, ADD カラム名2 カラム定義, …;

実際に先ほどのテーブルに項目追加を複数行うと、次のようになります。

mysql> ALTER TABLE sample_table ADD mail varchar(30), ADD sex varchar(10);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

結果の表示は省きますが、ちゃんと項目が2つ追加されているはずです。

項目追加する時に初期値を設定する方法

項目追加時に項目の初期値を設定したい場合は、カラム定義の後ろに「DEFAULT」を追加します。

記述方法は次の通りです。

ALTER TABLE テーブル名 ADD カラム名 カラム定義 DEFAULT 初期値;

こちらも先ほどのテーブルを使って確認してみます。

ALTER TABLE sample_table ADD score int DEFAULT 0;

上記SQLを実行後、テーブル定義を確認してみると次のように初期値の設定ができているはずです!

mysql> SHOW COLUMNS FROM sample_table;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| user_id | int         | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| age     | int         | YES  |     | NULL    |       |
| address | varchar(20) | YES  |     | NULL    |       |
| tel     | varchar(20) | YES  |     | NULL    |       |
| mail    | varchar(30) | YES  |     | NULL    |       |
| sex     | varchar(10) | YES  |     | NULL    |       |
| score   | int         | YES  |     | 0       |       |
+---------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)

項目追加する時に「NOT NULL」を設定する方法

項目追加時に NOT NULL を設定したい場合は、カラム定義の後ろに NOT NULL を記述します。

ALTER TABLE テーブル名 ADD カラム名 カラム定義 NOT NULL;

では、実際に確認してみましょう。

ALTER TABLE sample_table ADD salary int NOT NULL;

mysql> SHOW COLUMNS FROM sample_table;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| user_id | int         | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| age     | int         | YES  |     | NULL    |       |
| address | varchar(20) | YES  |     | NULL    |       |
| tel     | varchar(20) | YES  |     | NULL    |       |
| mail    | varchar(30) | YES  |     | NULL    |       |
| sex     | varchar(10) | YES  |     | NULL    |       |
| score   | int         | YES  |     | 0       |       |
| salary  | int         | NO   |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
9 rows in set (0.01 sec)

このように、salaryの項目だけ Null の部分が No になりました。

追加した項目名を変更するには「ALTER TABLE RENAME」

追加した項目名を変更したい場合は「ALTER TABLE RENAME」文を使います。

記述方法は次の通りです。

ALTER TABLE テーブル名 RENAME COLUMN 変更前の項目名 TO 変更後の項目名;

では、sample_table の score項目 を test という項目名に変更してみます。

ALTER TABLE sample_table RENAME COLUMN score TO test;

実行結果は省略しますが、期待した通りの結果になっているはずです。

追加した項目の定義を変更するには「ALTER TABLE CHANGE/ALTER TABLE MODIFY」

追加した項目の定義を変更する場合は「ALTER TABLE CHANGE」文もしくは「ALTER TABLE MODIFY」文を使います。

ALTER TABLE CHANGE文は、項目名とその定義の2つを変更できます。

一方、ALTER TABLE MODIFY文は、項目の定義だけを変更します。

それぞれ次のように記述します。

ALTER TABLE テーブル名 CHANGE 変更前の項目名 変更後の項目名 項目の定義;

ALTER TABLE テーブル名 MODIFY 項目名 項目の定義;

サンプルでの実行は省略しますが、それぞれ利用用途に応じて使い分けましょう!

追加した項目を削除するには「ALTER TABLE DROP」

追加した項目を削除する場合は「ALTER TABLE DROP」文を使います。

記述方法は次の通りでシンプルです。

ALTER TABLE テーブル名  DROP 項目名;

DROP の後ろに項目名を記述すれば簡単に削除できます。

試しに sample_table の salary項目 を削除してみます。

ALTER TABLE sample_table  DROP salary;

mysql> SHOW COLUMNS FROM sample_table;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| user_id | int         | YES  |     | NULL    |       |
| name    | varchar(20) | YES  |     | NULL    |       |
| age     | int         | YES  |     | NULL    |       |
| address | varchar(20) | YES  |     | NULL    |       |
| tel     | varchar(20) | YES  |     | NULL    |       |
| mail    | varchar(30) | YES  |     | NULL    |       |
| sex     | varchar(10) | YES  |     | NULL    |       |
| test    | int         | YES  |     | 0       |       |
+---------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)

上記のように、項目削除ができました!

まとめ

SQLの項目追加について解説しました。

項目の追加や定義の変更など、比較的カンタンに行えることがわかったかと思います。

もし実際にやってみてわからなくなってしまった時は、ぜひこの記事を参考にしてみてください!

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

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

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

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

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

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

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

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

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

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

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