SQL ServerのINSERT文の使い方!基本構文から実例まで徹底解説
SQL Server(Transact-SQL)におけるINSERT文は、テーブルに1件または複数件のレコードを挿入するための基本的なDML文です。本記事では、INSERT文の基本構文から、複数行の一括挿入、DEFAULT VALUESやSELECT文との組み合わせといった応用例まで、わかりやすく解説します。
INSERTコマンドの基本構文
1件のレコードを挿入する場合
最もシンプルな形式は、VALUESキーワードを使って1件のレコードを挿入する方法です。
INSERT INTO テーブル名
(列名1, 列名2, …)
VALUES
(値1, 値2, …);
完全な構文では、各列に代入する値として「DEFAULT」や「NULL」も指定できます。
INSERT INTO テーブル名
(列名1, 列名2, …)
VALUES
(DEFAULT | NULL | 値1,
DEFAULT | NULL | 値2,
…);
また、DEFAULT VALUESキーワードを使用すると、すべての列に既定値を適用したレコードを挿入できます。
INSERT INTO テーブル名
(列名1, 列名2, …)
DEFAULT VALUES;
複数のレコードを挿入する場合
最もシンプルな形式は、副問い合わせ(SELECT)を使って複数件のレコードを挿入する方法です。
INSERT INTO テーブル名
(列名1, 列名2, …)
SELECT 値1, 値2, …
FROM 挿入元テーブル名
[WHERE 条件];
TOP句を含む完全な構文は以下のとおりです。
INSERT [TOP (行数) [PERCENT]]
INTO テーブル名
(列名1, 列名2, …)
SELECT 値1, 値2, …
FROM 挿入元テーブル名
[WHERE 条件];
パラメータの説明
テーブル名
レコードを挿入する対象のテーブルです。
列名1, 列名2
値を挿入するテーブル内の列です。
値1, 値2
各列に設定する値です。列名1には値1が、列名2には値2が対応して割り当てられます。
TOP (行数)
オプション項目です。指定すると、結果セットの先頭から指定した行数分のレコードを挿入します。たとえばTOP (10)と指定すれば、先頭の10行が挿入されます。
PERCENT
オプション項目です。指定すると、結果セット全体に対する割合に基づいて先頭行が挿入されます。たとえばTOP (10) PERCENTなら、結果セットの上位10%が挿入されます。
挿入元テーブル名
別のテーブルからデータを挿入する際の、データの参照元となるテーブルです。
WHERE 条件
オプション項目です。挿入対象のレコードが満たすべき条件を指定します。
注意点
- INSERT文でテーブルにレコードを挿入する際、NOT NULL制約が設定されている列には必ず値を指定する必要があります。
- NULLを許容する列であれば、INSERT文の列リストからその列を省略することができます。
使用例
例1:VALUESキーワードを使った挿入
INSERT INTO shain
(shain_id, sei, mei)
VALUES
(10, 'Anderson', 'Sarah');
このINSERT文を実行すると、テーブルに1件のレコードが挿入されます。挿入されるレコードは、社員ID(shain_id)が10、姓(sei)が「Anderson」、名(mei)が「Sarah」となります。
この構文では、1回の実行で複数件のレコードを挿入することも可能です。
INSERT INTO shain
(shain_id, sei, mei)
VALUES
(10, 'Anderson', 'Sarah'),
(11, 'Johnson', 'Dale');
上記の例では、2件のレコードが一度に挿入されます。1件目は社員IDが10、姓が「Anderson」、名が「Sarah」。2件目は社員IDが11、姓が「Johnson」、名が「Dale」です。
このコマンドは、以下の2つのINSERT文を個別に実行した場合と同じ結果になります。
INSERT INTO shain
(shain_id, sei, mei)
VALUES
(10, 'Anderson', 'Sarah');
INSERT INTO shain
(shain_id, sei, mei)
VALUES
(11, 'Johnson', 'Dale');
例2:DEFAULT VALUESキーワードを使った挿入
INSERT INTO shain
(shain_id, sei, mei)
DEFAULT VALUES;
このINSERT文は、テーブルに1件のレコードを挿入します。新しいレコードには、社員ID・姓・名の各フィールドに対してあらかじめ定義された既定値が自動的に設定されます。
例3:SELECT文を使った挿入
SELECT文を組み合わせることで、より柔軟で高度なINSERT文を作成することもできます。
INSERT INTO renrakusaki
(renrakusaki_id, sei, mei)
SELECT shain_id, sei, mei
FROM shain
WHERE shain_id <= 100;
INSERT文の中にSELECT文を記述することで、大量のデータを高速に一括挿入できます。
この種類の挿入を行う場合は、事前に挿入される行数を確認しておくと安心です。挿入前にSELECT文を実行し、対象となる行数を把握しておきましょう。
SELECT COUNT(*)
FROM shain
WHERE shain_id <= 100;
-
SQL ServerのIF...ELSE文とは?基本構文と実践例をわかりやすく解説
他のプログラミング言語と同様に、SQL Serverでも条件分岐を行うためのIF...ELSEコマンドが用意されています。本記事では、IF...ELSE文の構文の使い方を、わかりやすい具体例とともに詳しく解説します。 概要 SQL ServerにおけるIF...ELSE文は、条件に応じて処理を分岐させるために使用されるステートメントです。条件がTRUE(真)と評価された場合は一方的な処理を実行し、FALSE(偽)と評価された場合には別の処理を実行します。 IF...ELSE文の構文 SQL ServerでIF...ELSEによる分岐処理を行うには、以下の構文に従って記述します。 IF 条件式{
-
MS SQL Serverとは?特徴・主な用途・バージョン履歴・インスタンスの基インスタンスの基礎を徹底解説
SQL Server(MS SQL Server)とは? SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。従来のRDBMSの枠組みにとどまらず、オブジェクト指向の概念も取り入れたORDBMS(オブジェクトリレーショナルデータベース管理システム)としての側面も併せ持っています。主な特徴は以下の通りです。 Microsoftが開発したRDBMSベースのデータベースソフトウェアである ORDBMS(オブジェクトリレーショナルデータベース管理システム)としても機能する 特定のプラットフォームに依存しない独立した環境で動作する コマンドライ