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

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

本記事では、データの「追加」方法について、基本的な操作からサンプルを交えた具体的な解説までを行っていきたいと思います。

SQLでのデータ追加方法を理解しよう!


SQLでのデータ追加には「INSERT文」を使用します。

今回は中でもよく利用される記述方法として、下記の3種類をご紹介していきます。

  • 列名指定有り
  • 列名指定無し
  • SELECT文の結果を追加

SQLのデータ追加1: 列名指定有り


SQLでデータを追加する際、列名を指定したINSERT文の記述方法についてご紹介していきます。

基本構文

列名を指定したINSERT文の基本構文は下記となります。

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

列名を指定してINSERT文を作成する場合、記述した列名と値の数は一致していないといけません。

また、列名に定義された型と登録する値の型は一致している必要があります。

テーブルに存在する指定されなかった列には、デフォルト値またはNULLが登録されます。

サンプル

ではサンプルで実際に動きを確認してみましょう。

今回のサンプルテーブルは下記のコマンドで作成しました。

CREATE TABLE test1(id int, name varchar(30), age int, register_date datetime default current_timestamp);

次にデータを追加するSQLですが、今回は「id」と「name」列のみを指定してINSERT文を発行してみます。

INSERT INTO test1(id, name) VALUES(1, "山田太郎");

SELECT文で確認してみると下記の結果となっています。

+------+--------------+------+---------------------+
| id   | name         | age  | register_date       |
+------+--------------+------+---------------------+
|    1 | 山田太郎      | NULL | 2020-08-23 15:49:41 |
+------+--------------+------+---------------------+

サンプルでは、「age」列にはデフォルトを設定していないため「NULL」が登録されており、「regester_date」列にはデフォルト値として設定した、実行した際の現在日時が登録されています。

SQLのデータ追加2: 列名指定無し


次にSQLでデータを追加する際、列名を指定せずに登録する方法についてご紹介していきます。

基本構文

列名を省略したINSERT文の基本構文は下記となります。

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

列名を省略する場合、テーブルに定義された列名の順番通りに値を指定する必要があります。

また、テーブルのカラムが増えた場合など、意図しないカラムに値が設定される可能性もあるため、列名指定無しでINSERT文を利用する際には、チーム内でテーブル定義変更の規約を徹底するなど注意が必要です。

サンプル

今回利用するサンプルテーブルは下記のコマンドで発行しました。

CREATE TABLE test1(id int, name varchar(30), age int);

列名を省略してINSERT文を実行してみましょう。

INSERT INTO test1 VALUES(1, "山田太郎", 30);

登録した後のデータを確認してみると、下記のように指定した順番通りにデータが登録されていることがご確認頂けます。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田太郎      |   30 |
+------+--------------+------+

複数のデータをまとめて追加

データを追加する際、1つのレコードだけでなく、まとめてデータを追加したい場合もあるでしょう。

もちろんINSERT文で複数データをまとめて追加することは可能です。

INSERT INTO test1 VALUES(値, 値, ...), (値, 値, ...) ...;

では実際にサンプル用のSQLで実行してみましょう。

INSERT INTO test1 VALUES(2, "山田花子", 25), (3, "佐藤一郎", 20);

追加したデータをSELECT文で確認すると、複数データが登録されていることが分かります。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田太郎      |   30 |
|    2 | 山田花子      |   25 |
|    3 | 佐藤一郎      |   20 |
+------+--------------+------+

SQLのデータ追加3: SELECT文の結果を追加


SQLのデータ追加で意外と需要が高いのが、あるテーブルから抽出したデータを別のテーブルへINSERTする処理です。

バックアップテーブルの作成時など、頻繁に利用されます。

基本構文

SELECT文の結果を利用したINSERTの基本構文は下記の通りです。

INSERT INTO テーブル名 (カラム名, カラム名, ...) SELECT (カラム名, カラム名, ...) FROM テーブル名 (WHERE 条件式);

サンプル

今回はサンプルとして、既存の「user」テーブルを「user_bk」テーブルにコピーする処理を実施してみたいと思います。

userテーブルのデータは下記のように設定されています。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田太郎      |   30 |
|    2 | 山田花子      |   25 |
|    3 | 佐藤一郎      |   20 |
|    4 | 田中次郎      |   40 |
|    5 | 鈴木三郎      |   50 |
+------+--------------+------+

user_bkテーブルは下記のコマンドでテーブルを作成し、データが空の状態とします。

CREATE TABLE user_bk(id int, name varchar(30), age int, backupdate datetime default current_timestamp);

実際にuserテーブルからuser_bkテーブルにバックアップを取得するSQLは下記のように作成します。

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

実行後、user_bkテーブルのデータを確認してみましょう。

+------+--------------+------+---------------------+
| id   | name         | age  | backupdate          |
+------+--------------+------+---------------------+
|    1 | 山田太郎      |   30 | 2020-08-23 20:41:02 |
|    2 | 山田花子      |   25 | 2020-08-23 20:41:02 |
|    3 | 佐藤一郎      |   20 | 2020-08-23 20:41:02 |
|    4 | 田中次郎      |   40 | 2020-08-23 20:41:02 |
|    5 | 鈴木三郎      |   50 | 2020-08-23 20:41:02 |
+------+--------------+------+---------------------+
ポテパンダの一言メモ

今回のように全てのデータを別テーブルに追加したい場合には、カラム名を指定せず「*」で代用することも可能です。

さいごに:SQLでのデータ追加は超頻出処理のひとつ


本記事では、SQLでのデータ追加について、3種類の方法をサンプルを交えながらご紹介してきました。

データベース関連の処理を扱う上で、INSERT文の扱いは必須知識のひとつです。

ぜひご自身で様々なパターンのテーブルを作成してみて、INSERT処理の動きを把握出来るよう何度も練習してみてください。

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

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

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

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

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

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

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

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

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

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

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