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件のデータを挿入してください。
ProductID | ProductName | Price | Stock |
---|
条件
- ProductID: 101
- ProductName: ‘りんご’
- Price: 150
- Stock: 50
問題2: 複数行のINSERT
次の2件のデータをProductsテーブルに一度に挿入してください。
ProductID | ProductName | Price | Stock |
---|---|---|---|
102 | みかん | 120 | 30 |
103 | バナナ | 100 | 20 |
問題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文はデータベース操作の基礎ですので、ぜひこの記事を参考に、さらに理解を深めてください。