【SQL】INSERT文を使ってデータを追加する方法を解説

  • 2024.07.05
       
【SQL】INSERT文を使ってデータを追加する方法を解説

SQLのINSERT文は、データベースにデータを挿入するのに使用するクエリです。本記事では、INSERT文の基本や使い方について解説します。ぜひ参考にしてください。

INSERT文とは

SQLのINSERT文は、データベースのテーブルに新しいレコードを挿入するクエリです。

【基本構文】

INSERT文の基本的な構文は、データを挿入するテーブルを指定し、続けて各カラム名とそれに対応するデータの値を指定します。

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

テーブル名のあとにカッコで、カラム1, カラム2…とカラム名をカンマで区切って並べます。そして、VALUESのあとのカッコに、各カラムに登録する値を同様に並べます。なお、この際カラム名と値のカラム数を一致させる必要があります。

あなたのご希望に沿った案件が必ず見つかります
【フリーランス向け】高収入好待遇の案件をご紹介

TECH MANIA フリーランス

≫まずは簡単60秒で無料お問い合わせから≪

INSERT文の使い方

INSERT文の具体的な使い方を解説していくにあたって、サンプルとして「テスト(test)」テーブルを用意しました。

「テスト(test)」テーブル

ID(id)氏名(name)性別(gender)点数(point)
1001秋山80
1002久保田100
1003佐々木65
1004佐藤75

単一レコードの追加

ここに、新たに鈴木さんのレコードを追加します。この場合、以下のようなINSERT文になります。

【実行コード】

INSERT INTO test (id,name,gender,point) 
VALUES (1005,'鈴木','女',60);

【実行結果】

ID(id)氏名(name)性別(gender)点数(point)
1001秋山80
1002久保田100
1003佐々木65
1004佐藤75
1005鈴木60

鈴木さんのレコードが追加されました。

複数のレコードを一度に追加

一つのSQL文で、複数のレコードをテーブルに追加することもできます。

【実行コード】

INSERT INTO test (id,name,gender,point) 
VALUES (1006,'田中','男',90),(1007,'土屋','女',55);

【実行結果】

ID(id)氏名(name)性別(gender)点数(point)
1001秋山80
1002久保田100
1003佐々木65
1004佐藤75
1005鈴木60
1006田中90
1007土屋55

田中さんと土屋さんのレコードが追加されました。

カラム名は省略できる

次のように、カラム名は省略することもできます。

【実行コード】

INSERT INTO test
VALUES (1005,'鈴木','女',60);

この場合、値を記述する順序がテーブルのカラムと一致している必要があります。

ただし、テーブルの構造が変わった場合やカラムの順序を間違えた場合はデータを正しく挿入できないケースがあります。そのため、カラム名を明示することが推奨されています。

INSERTするデータを別のテーブルから取得する

INSERT文では、挿入する値を直接入力しますが、サブクエリ(副問合せ)としてSELECT句を使用することで、別のテーブルから取得したデータをテーブルに挿入することができます。

例として、先ほどのテスト(test)テーブルから、点数(point)が60点未満の生徒のレコードを新しいテーブル「再テスト(retest)」テーブルに追加します。

「テスト(test)」テーブル

ID(id)氏名(name)性別(gender)点数(point)
1001秋山80
1002久保田100
1003佐々木65
1004佐藤75
1005鈴木60
1006田中90
1007土屋55

【実行コード】

INSERT INTO retest (id,name,gender,point)
SELECT id,name,gender,point
FROM test
WHERE point < 60;

クエリ内の WHERE句で「WHERE point < 60」という条件を設定しています。この指定によって、testテーブルからpointカラムの値が60点未満に該当するレコードのみが抽出されます。

WHERE句は、特定の条件下でのデータの絞り込みに使用されます。詳しくは、当ブログの【SQL入門1】WHEREで検索条件を指定する方法を解説で、WHEREの基本を詳しく解説しています。ぜひ参考にしてください。

【実行結果】

ID(id)氏名(name)性別(gender)点数(point)
1007土屋55

60点未満の生徒のデータだけが抽出され、新しいテーブルに登録されました。

DEFAULT値を使ったINSERT文

DEFAULT値とは、データベーステーブルの設計時に、各カラムに予め設定できるデフォルト値を指します。この値は、INSERT文で該当のカラムに明示的な値が提供されなかった場合に使用されます。これにより、すべてのデータを都度入力することなく、デフォルト値でデータを挿入できます。

テスト(test)テーブルで、点数(point)カラムのデフォルト値を「-」として設定します。

【実行コード】

CREATE TABLE test(
 id INT AUTO_INCREMENT PRIMARY KEY,
 name VARCHAR(50) NOT NULL,
 gender VARCHAR(10) DEFAULT -,
 point INT NOT NULL
);

上記のテーブル定義の「gender VARCHAR(10) DEFAULT -」部分があることで、性別(gender)カラムに特定の値を指定しない場合、「-」と自動で挿入されるようになります。

次に、新しい生徒のデータを挿入しますが、性別(gender)は指定せず、デフォルトの値を使用します。

【実行コード】

INSERT INTO customer (id,name,point)
VALUES (1008,'野村',70);

上記のINSERT文では、性別(gender)についての指定がないため、デフォルトの値である「-」が表示されます。

【実行結果】

ID(id)氏名(name)性別(gender)点数(point)
1001秋山80
1002久保田100
1003佐々木65
1004佐藤75
1005鈴木60
1006田中90
1007土屋55
1008野村70

テーブル結合した結果をINSERTする

INSERT文は、テーブル結合させた結果をINSERTすることも可能です。

説明にあたって新たに以下のテーブルを使用します。

「生徒(student)」テーブル

学籍番号(number)氏名(name)部活ID(club_id)
1菊池1
2鈴木3
3田中4
4山田1

「運動部(sport_club)」テーブル

ID(id)競技(sport)
1野球
2サッカー
3バスケットボール

「生徒」テーブルの「部活」カラムと「運動部」テーブルの「ID」カラムを紐づけ、結合条件を満たす場合に、「生徒」テーブルの「氏名」カラムと「運動部」テーブルの「競技」カラムを表示します。

【実行コード】

SELECT student.name,sport_club.sport FROM student JOIN sport_club ON student.club_id = sport_club.id;

【実行結果】

氏名
(name)
競技
(sport)
菊池野球
鈴木バスケットボール
山田野球

共通する値がない「生徒」テーブルの田中さん、「運動部」テーブルの「サッカー」が表示されていません。

これとINSERT文を併用します。新たなテーブル「運動部所属者(sport_student)」テーブルに運動部に属する生徒のデータを挿入します。

【実行コード】

INSERT INTO sport_student (name,sport)
SELECT student.name,sport_club.sport FROM student JOIN sport_club ON student.club_id = sport_club.id;

【実行結果】

氏名
(name)
競技
(sport)
菊池野球
鈴木バスケットボール
山田野球

INSERT文のカッコ内とSELECT句内の抽出カラムが対応しているのが分かります。

まとめ

私たちが日々行うデータの操作の中でも、INSERT文はよく利用される命令の一つです。本記事で紹介した知識を活用して、日々のデータベース作業を効率良く進めていきましょう。

以下では、SQLに関するさまざまな記事を取り上げています。SQLに関する疑問や興味がある方は、ぜひ併せて参考にしてみてください。

SQL関連記事

SQLの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

SQLには、今回紹介したINSERT以外にも多くの構文があり、完全に習得し、自在にデータを扱えるようになるには多くの学習時間と実践の時間が必要になります。

特に、実践の時間については独学ではなかなか設けることができないものです。実践を交えてSQLを身につけたいと考えるのであれば、総合的な実践まで経験できるプログラミングスクールがおすすめです。

当サイトTECH MANIAでは、最短3か月で基礎から実践力・応用力まで身につけることのできるプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

独学でつまずいた方、一流のITエンジニアとしてスキルを高めていきたい方は必見です。
お問い合わせは以下のリンクからお進みください。

TECH MANIAスクール

     

Otherカテゴリの最新記事