INSERT文は新しい行をテーブルに挿入するためのSQL文です。INSERT文を使用することで、テーブルに新しいレコードを追加することができます。
基本構文
INSERT INTO テーブル名 (列1, 列2, 列3, ・・・)
VALUES (値1, 値2, 値3, ・・・);
上記のSQLを説明します。
- INSERT INTO句
INSERT INTO句では、挿入先のテーブルの名前を指定します。 - 列
列は、挿入するデータの対応する列を指定します。列の順序とVALUES句内の値の順序は対応している必要があります。 - VALUES句
VALUES句では、挿入するデータの値を指定します。列と値の対応関係に注意して値を指定する必要があります。値はリテラル値、列や式、関数などで指定することができます。
以下に具体的な例を示します。
INSERT INTO 社員表 (社員番号, 名前, 入社日)
VALUES (1, '名前1', '2023-04-01');
上記の例では、社員表テーブルに新しい行を挿入しています。社員番号、名前、入社日という3つの列に対応する値を指定しています。VALUES句内の値はそれぞれの列に対応しており、新しいレコードが作成されます。
また、INSERT文には他にも以下のような機能があります。
- INSERT文を使用する際には、データのバリデーションや制約のチェックに注意する必要があります。テーブルに定義された制約(主キーや一意キー制約、NOT NULL制約など)に違反するデータを挿入しようとするとエラーが発生します。
- INSERT文では、一度に複数の行を挿入することも可能です。以下は複数行を挿入する例です。
INSERT INTO 社員表 (社員番号, 名前, 入社日)
VALUES (1, '名前1', '2021-04-01'),
(2, '名前2', '2022-04-01'),
(3, '名前3', '2023-04-01');
上記の例では、3つの異なる行が一度に社員表テーブルに挿入されます。
- INSERT文の一部の列に値を挿入する場合
INSERT文では、すべての列に対して値を指定する必要はありません。一部の列に対してのみ値を挿入することもできます。この場合、INSERT文で挿入しない列はNULL値またはデフォルト値が設定されます。
例えば、社員表テーブルにはデフォルト値が設定されている列があり、その列に対して値を指定しない場合はデフォルト値が使用されます。
INSERT INTO 社員表 (社員番号, 名前)
VALUES (1, '名前1');
上記の例では、社員番号、名前の2つの列に対して値を指定し、入社日列には値を指定していません。入社日列にはデフォルト値が設定されている場合、そのデフォルト値が使用されます。
- SELECT文を使用したINSERT文(サブクエリを使用する場合)
INSERT文では、サブクエリを使用してSELECT文の結果を挿入することも可能です。これにより、他のテーブルからのデータを抽出して挿入することができます。
例えば、エントリーテーブルから特定の条件を満たすデータを抽出し、社員表テーブルに挿入する場合、以下のような形式で記述します。
INSERT INTO 担当者 (社員番号, 名前)
SELECT 社員番号, 名前
FROM 社員表
WHERE 性別 = '男';
上記の例では、社員表から性別が’男’である行の社員番号、名前を抽出し、担当者テーブルに挿入しています。
INSERT文を、適切に使用することでデータベースへのデータの追加が容易になります。ただし、注意点として、データのバリデーションや制約のチェックに留意する必要があります。また、トランザクションの管理やパフォーマンスの最適化も重要な要素です。

コメント