SQL ServerのINSERT文をマスターしよう!基礎から応用まで徹底解説

SQL ServerのINSERT文は、テーブルに新しいデータを挿入するための命令です。

データベースを運用する上で、顧客情報や注文履歴などを追加する際に利用されます。

本記事では、基本的なINSERT文の使い方から応用的な技術まで解説し、最後には演習問題も用意していますので、実践的なスキルが身につきます。


INSERT文の基本構文

まずは、基本の構文を見ていきましょう。

基本構文

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

以下の例では、Customersというテーブルに1件の顧客情報を挿入しています。

INSERT INTO Customers (CustomerID, Name, Email)
VALUES (1, '田中 太郎', 'tanaka@example.com');

INSERT INTO SELECTを使ったデータ挿入

他のテーブルからデータをコピーする場合は、INSERT INTO SELECT構文を使用します。

INSERT INTO SELECTの構文

INSERT INTO テーブル名 (列1, 列2, ...)
SELECT 列A, 列B, ...
FROM 別のテーブル;

NewCustomersというテーブルに、Customersテーブルの一部のデータをコピーします。

INSERT INTO NewCustomers (CustomerID, Name)
SELECT CustomerID, Name
FROM Customers
WHERE Email LIKE '%example.com';

複数行のデータを一度に挿入する

1件ずつのINSERTは効率が悪い場合があります。

そのため、SQL Serverでは複数行のデータを一度に挿入することも可能です。

複数行挿入の構文

INSERT INTO テーブル名 (列1, 列2, ...)
VALUES 
(値1A, 値1B, ...),
(値2A, 値2B, ...),
(値3A, 値3B, ...);

INSERT INTO Customers (CustomerID, Name, Email)
VALUES 
(2, '山田 花子', 'yamada@example.com'),
(3, '佐藤 一郎', 'sato@example.com');

IDENTITY列への挿入と注意点

IDENTITY列は、自動的に連番を生成する列です。

通常、この列は明示的に指定する必要がありませんが、場合によっては挿入が必要になることもあります。

IDENTITY列への挿入の方法

SET IDENTITY_INSERTを使用して、手動でIDを挿入します。

SET IDENTITY_INSERT Customers ON;

INSERT INTO Customers (CustomerID, Name, Email)
VALUES (4, '高橋 二郎', 'takahashi@example.com');

SET IDENTITY_INSERT Customers OFF;

実践演習問題

以下の問題を解いて、INSERT文の理解を深めましょう。

問題1: 基本的なINSERT文

以下のProductsテーブルに1件のデータを挿入してください。

ProductIDProductNamePriceStock

条件

  • ProductID: 101
  • ProductName: ‘りんご’
  • Price: 150
  • Stock: 50

問題2: 複数行のINSERT

次の2件のデータをProductsテーブルに一度に挿入してください。

ProductIDProductNamePriceStock
102みかん12030
103バナナ10020

問題3: INSERT INTO SELECTの使用

OldProductsというテーブルから、Productsテーブルに在庫が20以上の商品だけをコピーしてください。

OldProducts
ProductID
ProductName
Price
Stock

演習問題の解答例

解答例1: 基本的なINSERT文

INSERT INTO Products (ProductID, ProductName, Price, Stock)
VALUES (101, 'りんご', 150, 50);

解答例2: 複数行のINSERT

INSERT INTO Products (ProductID, ProductName, Price, Stock)
VALUES 
(102, 'みかん', 120, 30),
(103, 'バナナ', 100, 20);

解答例3: INSERT INTO SELECTの使用

INSERT INTO Products (ProductID, ProductName, Price, Stock)
SELECT ProductID, ProductName, Price, Stock
FROM OldProducts
WHERE Stock >= 20;

まとめ

本記事では、SQL ServerのINSERT文について基本的な使い方から応用例まで幅広く解説しました。

さらに、実践的な演習問題を通して、学んだ知識を実際に使えるようになることを目指しました。

INSERT文はデータベース操作の基礎ですので、ぜひこの記事を参考に、さらに理解を深めてください。