この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "INSERT" SQL
INSERT(インサート)ステートメントは、行を追加する、コンピュータのデータベース言語 SQL におけるデータ操作言語(DML)ステートメントの1つである。1度に1行を追加するだけではなく、問い合わせの結果としての複数行を追加することもできる。なお、ユーザーはそのテーブル(関係)に対してINSERT権限を持っている必要がある。また、WHERE句で指定したテーブル全てに対してSELECT権限を持っている必要がある。 列の数と値の数は一致している必要がある。指定のない列についてはデフォルト値(テーブル作成時にDEFAULT句で指定された値)またはNULLが使われる。列の順番は任意である。列の指定が無い場合、テーブル作成時の列順を利用してすべての列を指定したと扱われる。 設定した値あるいは未設定時の値(デフォルト値またはNULL)は、その列またはテーブルに適用される制約(主キー制約、一意性制約、参照整合性制約、CHECK制約、NOT NULL制約など)を満たさなければならない。文法エラーまたは制約違反があれば行追加は失敗する。 VALUES に続けて複数の行値を指定することにより、複数の行を一括で挿入することができる。INSERT を複数回実行するのと結果は変わらないが、データベース製品によっては処理の効率が高まる場合がある。 例INSERT INTO phone_book (name, number) VALUES ('John Doe', '555-1212');INSERT INTO phone_book (name, sex) VALUES ('Nancy', 'Woman'),('Tom', 'Man'),('Cathy','Woman'); テーブル2に対するSELECTステートメントでの問い合わせの結果をテーブル1に追加する。 例INSERT INTO phone_book2 SELECT * FROM phone_book WHERE NAME IN ('John Doe', 'Peter Doe'); データベースシステムが自動採番した連番等の人工キーを主キーとして利用する場合、他のSQLステートメントから、その追加対象のテーブルを利用するために、自動採番された主キーを見つける必要があるが、その方法には以下のようなものがある。
構文
値の挿入INSERT INTO テーブル名 [ (列名1 [ ,列名2・・・]) ] VALUES (値A1 [, 値A2 ...]) [, (値B1 [, 値B2 ...]) ...];
問い合わせ結果の挿入INSERT INTO テーブル名1 SELECT * FROM テーブル名2 WHERE 条件式;
採番キーの見つけ方
特別なストアドプロシージャを使用する
一時テーブルに最後に追加した行をSELECTステートメントで検索する
INSERTステートメントにおける一意な要素の組み合わせを、SELECTステートメントでの検索に使用する
INSERTステートメントでGUIDを使用し、 SELECT ステートメントでそれをキーに検索する
表
話
編
歴
データベース管理システム
データモデル
関係モデル
データベース設計
正規化
参照整合性
関係代数
関係論理
データベース管理システム
関係データベース管理システム
オブジェクト関係データベース
分散データベース
トランザクション処理
概念
データベース
ACID
CRUD
3値論理(NULL)
候補キー
外部キー
主キー
スーパーキー
代理キー
オブジェクト
関係 (表)
ビュー