SQL の基本 | DML: データ操作言語 | INSERT
基本的に、テーブルにデータを入力する方法は 2 つある。1 つは 1 回に 1 件のデータを登録する方法である。もう 1 つは 1 回に複数件のデータを入力する方法である。
INSERT 構文
最も基本的なデータ登録の SQL は次のとおりである。
INSERT INTO "テーブル名" ("フィールド1", "フィールド2", ...)
VALUES ("値1", "値2", ...);
テーブルに作成されたフィールドの順序と入力した値の順序が一致していれば、フィールド名は省略することもできる。
INSERT INTO "テーブル名"
VALUES ("値1", "値2", ...);
SELECT で一度に複数件のデータを入力することもできる。前述の例とは異なり、SELECT コマンドを使用して入力先テーブルに入れるデータを指定する。すると、そのデータは別のテーブルから来るのかという疑問が出るかもしれないが、必ずしもそうではない。一度に複数件のデータを入力する SQL は次のとおりである。
INSERT INTO table2
SELECT * FROM table1
WHERE condition;
ここでは最も基本的な形式を示しているが、SQL 文には WHERE、GROUP BY、HAVING などのほか、テーブルの結合やエイリアスなどを含めることもできる。
INSERT の例: 1 件ずつ登録
次のような構造のテーブルがあるとする。
store_information テーブル
| フィールド名 | データ型 |
|---|---|
| store_name | char(50) |
| sales | float |
| txn_date datetime |
次に、Los Angeles 店舗に Jan-10-2018、売上 $900 のデータをこのテーブルへ入れる場合、次の SQL 文を入力する。
INSERT INTO store_information (store_name, sales, txn_Date)
VALUES ('Los Angeles', 900, 'Jan-10-2018');
または、次のようにも入力できる。
INSERT INTO store_information VALUES ('Los Angeles', 900, 'Jan-10-2018');
INSERT の例: 複数件を一度に登録
2017 年の販売データを store_information テーブルに登録するとき、そのデータを sales_information テーブルから取得して入れる場合は、次の SQL を入力する。
INSERT INTO store_information (store_name, sales, txn_date)
SELECT store_name, sales, txn_date
FROM sales_information
WHERE Year(txn_date) = 2017;
ここでは SQL Server の関数で日付の年を検索しているが、データベースによって構文は異なる。たとえば Oracle では WHERE TO_CHAR(Txn_Date, 'yyyy') = 2017 のように使用する。