コンテンツにスキップ

INSERT (SQL)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。竹太郎 (会話 | 投稿記録) による 2006年11月6日 (月) 04:46個人設定で未設定ならUTC)時点の版 (訂正)であり、現在の版とは大きく異なる場合があります。

INSERTステートメントは、レコードを追加する、SQLにおけるデータ操作言語 (DML)ステートメントの1つである。1度に1レコードを追加するだけではなく、問い合わせの結果としての複数レコードを追加することもできる。なお、ユーザーはそのテーブルに対してINSERT権限を持っている必要がある。また、WHERE句で指定したテーブル全てに対してSELECT権限を持っている必要がある。

構文

構文 その1

 INSERT INTO テーブル名 (列名1 [ ,列名2・・・]) VALUES (値1 [ ,値2・・・]);
列の数と値の数は一致している必要がある。指定のない列についてはデフォルト値(テーブル作成時にDEFAULT句で指定された値)またはNULL値が使われる。設定した値あるいは未設定時の値(デフォルト値またはNULL値)は、その列またはテーブルに適用される制約(主キー制約一意性制約CHECK制約NOT NULL制約など)を満たさなければならない。文法エラーまたは制約違反があればレコード追加は失敗する。列の順番は任意である。
サンプル
INSERT INTO phone_book (name, number) VALUES ('John Doe', '555-1212');

構文 その2

INSERT INTO テーブル名 VALUES (値1 [ ,値2・・・]);
すべての列の値を指定する場合は、テーブル作成時の列順を利用して、列の指定を省略した記述が可能である。
サンプル
( 'phone_book'テーブルは 'name'列、'number'列のみであると仮定)
INSERT INTO phone_book VALUES ('John Doe', '555-1212');

構文 その3

INSERT INTO テーブル名1 SELECT * FROM テーブル名2 WHERE 条件式;
テーブル2に対するSELECTステートメントでの問い合わせの結果をテーブル1に追加する。
サンプル
INSERT INTO phone_book2 SELECT * FROM phone_book WHERE NAME IN ('John Doe', 'Peter Doe');

採番キーの見つけ方

データベースシステムが自動採番した連番等の代替キーを主キーとして利用する場合、他のSQLステートメントから、その追加テーブルを利用するために、自動採番された主キーを見つける必要があるが、その方法には以下のようなものがある。
  • 特別なストアドプロシージャを使用する
  • 一時テーブルに最後に追加したレコードをSELECTステートメントで検索する
  • INSERTステートメントにおける一意な要素の組み合わせを、SELECTステートメントでの検索に使用する
  • INSERTステートメントでGUIDを使用し、 SELECT ステートメントでそれをキーに検索する