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

- SE
- SQL Serverを使い始めたんですけど、データを登録するにはどうすればいいんですか?
- PL
- データを登録するには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
- SE
- insert文を使用して、データを登録することができました。
- PL
- 登録するカラムの数が増えても、insert intoという構文は変わらないので、しっかり理解して使っていきましょう。
SQLでINSERT文を使用してみよう
SQL Server Management Studioにて、insert文を使用してデータを登録しましたがいかがでしたか。
今回の記事ではカラムの数が3つでしたが、カラムの数が増えても構文は変わりません。ぜひ、insert intoの構文を理解して使ってみてください。
Search キーワード検索
Popular 人気の記事
-
【VB.NET入門】DataGridViewの使い方まとめ
公開: 更新:
reccomended おすすめ記事
-
【.NETが統合】.NET 5の概要と今後のリリース予定
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
蔦屋書新店オープンに関するアプリ開発/Oracle/東京都渋谷区/【WEB面談可】/在宅勤務
月給56万~59万円東京都渋谷区(神泉駅) -
資産運用会社向け残高管理システム運用保守/SQLServer/東京都中央区/【WEB面談可】
月給50万~60万円東京都中央区(銀座駅) -
資産運用会社向け残高管理システム開発のテスター/SQLServer/東京都中央区/【WEB面談可】
月給25万~35万円東京都中央区(銀座駅) -
放射線部門システムパッケージの運用保守/Oracle/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
放射線部門システムパッケージの開発のテスター/Oracle/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅) -
営業フロントシステム運用保守/ASP.NET/東京都江東区/【WEB面談可】
月給50万~60万円東京都江東区(木場駅)