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

データベースの基本的な操作として「追加」「更新」「選択」「削除」の4つが挙げられます。

本記事では、データベースへのデータ追加に使用するINSERT文について、基本的な操作方法をサンプルコードを交えながらご紹介していきたいと思います。

SQLでデータ追加 INSERT文の基本構文


まずはSQLでデータを追加する基本パターンについて構文を確認していきたいと思います。

テーブルに関しては、下記のCREATE文をサンプル用に実行しました。

CREATE TABLE user(id int, name varchar(10), age int);

INSERT文の基本構文

INSERT文の基本構文は下記の通りです。

INSERT INTO テーブル名 VALUES(値, 値, ...)

INSERT文を実行する際、カラム名を指定しない方法では、テーブルのカラム数と同様の値を指定する必要があります。

カラム数分の値を指定したサンプル

実際にカラム数分の値を設定し、テーブルにデータが追加されるのかを確認してみましょう。

INSERT INTO user VALUES(1, "山田花子", 22);

SELECT文でデータを確認してみましょう。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田花子     |   22 |
+------+--------------+------+

指定したデータが追加されていることをご確認頂けます。

ポテパンダの一言メモ

データの確認には下記のSQLコマンドを実行しました。

SELECT * FROM user;

テーブルのカラム数値を指定しなかった場合

では、テーブルのカラム数、値を指定しなかった場合にはどういった結果が返ってくるのかについても確認しておきましょう。

INSERT INTO user VALUES(2, "山田太郎");

実行すると下記の画像のような結果が表示されます。

このようにカラム数が一致していないとエラーとなり、データの追加処理が正常に行われません。

カラムに特定のデータを追加したく無い場合

では、例えば名前が不明のユーザーを登録したい場合などは、どうすれば良いのでしょうか?

INSERT文ではテーブルと同じカラム数の値を指定する必要があるため、特定のデータを追加したくないカラムには「NULL」を指定します。

INSERT INTO user VALUES(2, NULL, 33);

実行した結果を確認してみると、下記のように名前がNULLに設定されたデータが追加されていることをご確認頂けます。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田花子     |   22 |
|    2 | NULL         |   33 |
+------+--------------+------+

SQLでカラム名を指定したデータ追加方法


次にカラム名を指定してデータを追加する際の記述方ほうについてご紹介します。

特定のカラムにのみデータを追加したい場合などは、こちらの書き方が利用されます。

ポテパンダの一言メモ

サンプルのテーブルは上記と同様ですが、追加したデータを全て削除している状態です。

TRUNCATE TABLE user;

カラム名指定のINSERT基本構文

カラム名を指定する際のINSERT文は下記のような記述となります。

INSERT INTO テーブル名(カラム名, カラム名, ...) VALUES(値, 値, ...)

カラム名を指定しなかった場合、値はテーブルに存在するカラム数指定してあげる必要がありましたが、カラム名を指定した場合には、指定したカラムに対しての値のみ設定すれば問題ありません。

カラム名指定のサンプル

では実際にカラム名を指定してデータの追加処理を実施してみます。

INSERT INTO user(id, name) VALUES(1, "山田花子");

idと名前だけを入力し、年齢のカラムは指定せずに実行した結果が下記の通りです。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田花子     | NULL |
+------+--------------+------+

このように指定していないカラムには自動的にNULLが設定されていることをご確認頂けます。

ポテパンダの一言メモ

テーブルが変更されてカラムが増えた場合、SQL自体の変更をしなくても動作に支障がないメリットがあります。

テーブルにNOT NULL指定のカラムが存在する場合は要注意

カラム名さえ指定すればテーブルの構造は気にしなくて良いのかというとそういうわけではありません。

NOT NULL指定のカラムが存在する場合には、デフォルト値が設定されていない場合、SQL実行エラーとなり処理が失敗してしまいます。

まずサンプルのuserテーブルにALTER文でNOT NULLのカラムを1つ増やしてみましょう。

ALTER TABLE user ADD valid BOOLEAN NOT NULL;
ポテパンダの一言メモ

今回はデータが有効か無効かを判定するためのvalidというカラムをNOT NULL指定で追加してみました。(デフォルト値の指定は無し)

では実際にカラム名指定のINSERT文で、NOT NULL指定のカラムを記述しなかった場合どうなるのか確認してみましょう。

INSERT INTO user(id, name) VALUES(2, "山田太郎");

下記の画像のように、デフォルト値が設定されていないNOT NULLの項目が存在する場合にはエラーとなってしまうため、注意が必要です。

SQLで抽出したデータをテーブルに追加する


SQLでのデータ追加の方法として、もうひとつよく利用されるのが、テーブルから取得したデータを別のテーブルへ追加するという方法です。

例えばバックアップ用のテーブルにデータをコピーする場合などに利用出来ますね。

少し応用編とはなりますが、利用用途の多い処理ですので、ぜひ使いこなしてみてください。

今回利用するサンプルとして、下記のバックアップテーブルを用意しておきます。

CREATE TABLE user_bk(id int, name varchar(10), age int, bk_date date DEFAULT(CURRENT_DATE));

またuserテーブルは下記のように作り直しています。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田花子     |   22 |
|    2 | 山田太郎     |   33 |
|    3 | 佐藤一郎     |   44 |
+------+--------------+------+

SELECT文を利用したINSERT基本構文

別テーブルから抽出したデータを追加する際のINSERT文は下記のような記述となります。

INSERT INTO 追加するテーブル名(カラム名, ...) SELECT カラム名, ... FROM 取得するテーブル名;

SELECT文を利用したINSERT処理のサンプル

では実際に用意したuserテーブルのサンプルデータを利用して、バックアップを取得するSQLを記述してみます。

INSERT INTO user_bk (id, name, age) SELECT id, name, age FROM user;

実行すると、userテーブルから取得したカラムの値をそのままINSERT INTOで指定したuser_bkテーブルに追加していることがご確認頂けます。

+------+--------------+------+------------+
| id   | name         | age  | bk_date    |
+------+--------------+------+------------+
|    1 | 山田花子     |   22 | 2020-07-19 |
|    2 | 山田太郎     |   33 | 2020-07-19 |
|    3 | 佐藤一郎     |   44 | 2020-07-19 |
+------+--------------+------+------------+
ポテパンダの一言メモ

bk_dateに関しては、テーブル作成の際にデフォルト値としてSQLが実行された日付を自動で追加するように設定しています。

さいごに:SQLのデータ追加処理は必須知識の1つ


本記事では、SQLのデータ追加処理について基本的な構文と利用方法をご紹介してきました。

データベースにおいて、データ追加の処理は必須知識の1つです。

今回ご紹介した基本を抑えた上で、ご自身が開発されるプログラムにも応用出来るよう、しっかりと理解していきましょう。

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

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

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

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

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

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

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

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

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

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

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