SQLにおけるINSERT文の使い方7選|応用的な使い方など多数解説

- SQLとは?
- INSERT文を使う場面
- 【入門編】SQL Serverにおけるデータの操作方法4つ
- 1:登録
- 2:検索
- 3:更新
- 4:削除
- SQLにおけるINSERT文の使い方7選
- 1:SQL Serverにデータを登録する
- 2:テーブル名の後にテーブル列名を書く方法
- 3:テーブル名とvaluesの間にテーブル列名を書かない方法
- 4:select文の結果をテーブルに入れる
- 5:列を指定して追加したいとき
- 6:複数のデータをまとめて追加したいとき
- 7:複数のレコードを同時に入れる
- SQLにおけるSELECT句を使ったINSERTの応用的な使い方
- 他のテーブルにある値を別のテーブルにも記入するには?
- SQLでINSERT文を使用してみよう
- システム
エンジニア - SQL Serverを使い始めたんですけど、データを登録するにはどうすればいいんですか?
- プロジェクト
リーダー - データを登録するにはinsert文という構文を使用します。方法を一緒に確認しましょう。
SQLとは?
SQLとは、データベースに対してテーブルを作成したり、テーブル内に格納されたデータを取得するために人間が理解しやすい言葉でかかれたデータベースへ問い合わせができる言語です。
SQLにはオラクル(oracle) SQLやMySQLなど、様々なSQLの種類があります。
なお、SQLは略語だと勘違いされる方もいますが、略語ではありません。
INSERT文を使う場面
SQLのINSERT文は、テーブルにデータ(レコード)を追加したい場合に使用します。
参加者名簿を例に考えるとわかりやすいでしょう。あるイベントの参加者名簿があったとします。これがデータベースではテーブルに当たります。
参加者名簿内に参加者を記載していくという行為が、INSERT文に当たります。
【入門編】SQL Serverにおけるデータの操作方法4つ
SQL Serverでデータを操作する方法は以下の4種類です。
・登録
・検索
・更新
・削除
1:登録
データベース上にデータを登録します。
データの登録には、insert文という構文を使用して、テーブルにデータを登録します。
2:検索
登録したデータを検索できます。
データの検索には、select文という構文を使用して、テーブルからデータを検索します。
検索する際には条件を指定して、合致するデータのみ検索するといったことも可能です。
3:更新
登録したデータを更新できます。
データの更新には、update文という構文を使用して、テーブルに登録されているデータを更新します。
更新する際には条件を指定して、合致するデータのみ更新するといったことも可能です
4:削除
登録されているデータを削除できます。
データの削除には、delete文という構文を使用して、テーブルに登録されているデータを削除できます。
削除する際には条件を指定して、合致するデータのみ削除するといったことも可能です。
SQLにおけるINSERT文の使い方7選
SQLにおけるINSERT文の使い方について、よく使用する7つのINSERT文を説明していきます。
SQLを使う上で非常に役に立つものばかりですので、しっかり理解しましょう。
1:SQL Serverにデータを登録する
それでは実際にデータを登録してみましょう。データベースとテーブルは前回作成したものを使用します。
データは何も登録されていない状態です。
1
2
3
|
insert文によるデータ登録1
insert into sample (id, name, created) values (1, '山田太郎', SYSDATETIME())
|
insert into の後にテーブル名が入ります。(今回使うテーブルはsampleテーブルです)
テーブル名の後はデータを登録するカラムを以下のように指定します。
(id, name, created)
valuesの後に記述されている部分は、登録するデータの内容です。
先ほど、valuesの前で指定したカラムと順番が対応しており、記述する順番でどのカラムにどのデータを登録するのかが決まります。
createdカラムに登録されるデータとして指定している、SYSDATETIME()は現在の日時を取得する関数です。
このようにすることで、現在の日時を登録することができます。
よって、上記のコードでは以下のようにデータが登録されます。
上記のinsert文では対象のテーブルのカラムをすべて指定しましたが、指定を省略することも可能です。
1
2
3
4
|
insert文によるデータ登録2
insert into sample (id, name) values (2, '山田花子')
|
先ほどのinsert文との違いは、createdカラムの指定がないことです。
values以下の登録するデータ内容の記述にもcreatedカラムに登録するデータの記述はありません。
実行すると、以下のように登録されます。
createdカラムには、nullが登録されました。
このように、insert文でカラムを省略するとnullが登録されるので、値を登録する必要がないカラムは記述を省略することができます。
2:テーブル名の後にテーブル列名を書く方法
SQLのINSERT文でテーブル名の後にテーブル列名を書く方法を説明していきます。
先ほど紹介したSQL文が、この方法に当てはまります。
1
2
3
4
|
insert文によるデータ登録1
insert into sample (id, name, created) values (1, '山田太郎', SYSDATETIME())
|
INSERT文では列名を省略することで、項目は未入力状態となります。
1
2
3
4
|
insert文によるデータ登録2
insert into sample (id, name) values (2, '山田花子')
|
3:テーブル名とvaluesの間にテーブル列名を書かない方法
SQLのINSERT文でテーブル名とvaluesの間で列指定せずにレコードを追加する方法もあります。
INSERT文で列名を無視する場合は、すべての列項目を指定する必要があります。
1
2
3
4
|
insert文によるデータ登録3
insert into sample values (3, '山田次郎', SYSDATETIME());
|
4:select文の結果をテーブルに入れる
続いては外部結合した他のテーブルを参照し、テーブルにレコードを追加する書き方を説明します。
事前にsampleと全く同じ項目を持つsample2テーブルを作成しておきましょう。
次のSQLクエリは、sample2テーブルに対して副問合せを使用してsampleテーブルのレコードを追加しています。
1
2
3
4
|
insert文によるデータ登録4
insert into sample2 (id, name) select id, name from sample;
|
5:列を指定して追加したいとき
ここからは、SQLにおける列を指定したレコードを追加する方法を説明します。
Insert文で全ての列ではなく、指定した列だけを入力したいときに役に立ちます。
それでは見ていきましょう。
固定文字列を指定するとき
追加するレコードに固定値を入力する方法です。
例えば、sampleテーブルに’type’という文字列型の項目を追加したsample3というテーブルを作成します。
次のINSERT文では、’type’レコードには固定値で’Guest’という入力値を設定し、同時にsampleテーブルのレコードをsample3に入力していきます。
1
2
3
4
|
insert文によるデータ登録5
insert into sample3 select id, name, 'Guest', created from sample;
|
SQL実行結果
sample3テーブル
id name type created
1 山田太郎 Guest 2021-05-22 18:02:12.547
2 山田花子 Guest NULL
3 山田次郎 Guest 2021-05-22 18:02:12.550
式を指定するとき
SQLのINSER文中に計算式を設定することも可能です。
足し算や引き算だけでなく、様々な種類の計算結果を入力することができます。
今回は日付型に対して-1することで1日前の日時を指定しています。
INSERT文に限らず、SQLでは日付型のほかにも数値や文字列など様々な型でも計算式を使用できます。
1
2
3
4
|
insert文によるデータ登録6
insert into sample4 select id, name, NULL, created - 1 from sample;
|
6:複数のデータをまとめて追加したいとき
続いては複数のデータをまとめてINSERT文で追加したいときのコードを紹介します。
繰り返しになりますが、おさらいとしてみていきましょう。
1
2
3
4
|
insert文によるデータ登録7
insert into sample (id, name, created) values (4, '山田三郎', SYSDATETIME());
|
7:複数のレコードを同時に入れる
SQLで複数レコードを同時に入力する方法について説明します。
1レコードずつINSERT文で追加できますが、この方法では時間がかかります。
2行だけであれば問題ありませんが、100件や1000件、1万件必要な時に1行ずつINSERT文を記載するのは大変な作業です。
INSERT文を1行でまとめて登録するには、レコードごとに括弧でくくりながら、カンマ区切りで指定します。
1
2
3
4
5
6
7
|
insert文によるデータ登録8
insert into sample (id, name) values
(5, '山田四郎'),
(6, '山田吾郎'),
(7, '山田梅子');
|
SQLにおけるSELECT句を使ったINSERTの応用的な使い方
ここまで基本的なSQLのINSERT文を紹介してきました。
続いては応用的なINSERT文の使い方を紹介していきます。まだ基本部分が理解できてない方は、例題のコードを書いてみるとよいでしょう。
他のテーブルにある値を別のテーブルにも記入するには?
別のテーブルの値を使用して、INSERTを行う方法があります。
SQLの副問合せを使用することで、他のテーブルにある値を別のテーブルにも記入することができます。
では、その記入方法を詳しく説明します。
INSERT INTO SELECT構文を使う
SQLにおいて他テーブルを参照して重複するデータ(同じデータ)が存在しない場合の、レコードを追加する方法を見ていきましょう。
ここではsampleテーブルとsample4テーブルを使用します。
テーブルごとの値は次の通りです。
sampleテーブル
id name created
1 山田太郎 2021-05-22 18:02:12.547
2 山田花子 NULL
3 山田次郎 2021-05-22 18:02:12.550
4 山田三郎 2021-05-22 18:30:57.963
5 山田四郎 NULL
6 山田吾郎 NULL
7 山田梅子 NULL
sample4テーブル
id name type created
1 山田太郎 NULL 2021-05-21 18:02:12.547
2 山田花子 NULL NULL
3 山田次郎 NULL 2021-05-21 18:02:12.550
次のコードはsample4に存在しないidを一括でINSERTするコードです。
1
2
3
4
5
6
7
8
|
insert into sample4 (id, name)
select id, name from sample a
where not exists (
select * from sample4 b
where a.id = b.id
);
|
SQL実行結果
sample4テーブル
id name type created
1 山田太郎 NULL 2021-05-21 18:02:12.547
2 山田花子 NULL NULL
3 山田次郎 NULL 2021-05-21 18:02:12.550
4 山田三郎 NULL NULL
5 山田四郎 NULL NULL
6 山田吾郎 NULL NULL
7 山田梅子 NULL NULL
- システム
エンジニア - insert文を使用して、データを登録することができました。
- プロジェクト
リーダー - 登録するカラムの数が増えても、insert intoという構文は変わらないので、しっかり理解して使っていきましょう。
SQLでINSERT文を使用してみよう
SQL Server Management Studioにて、insert文を使用してデータを登録しましたがいかがでしたか。
今回の記事ではカラムの数が3つでしたが、カラムの数が増えても構文は変わりません。ぜひ、insert intoの構文を理解して使ってみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)