データベース千夜一夜第7回

データの加工命令(1)~レコードの追加とテーブルの作成 長谷川裕行
有限会社 手國堂

レコードの追加~INSERT命令

INSERT命令は、既存のテーブルに新たなレコードを1件追加します。まず基本的な使い方を紹介します。


- フィールドと値を指定する -

INSERT命令は、一般にINTO句を添えて使用します。以下のような書式です。

  INSERT INTO <追加先テーブル> (<フィールドリスト>) [VALUES (<値リスト>)]

<追加先テーブル>で指定したテーブルに新たなレコードを1件追加します。<フィールドリスト>には、<追加先テーブル>で指定したテーブルのフィールド名を「,」で区切って列挙します。順序も追加先テーブルと同じでなければなりません。

VALUES句は省略でき、その場合は各フィールドにNULL値(数値の0ではなく、「何もない」ことを示す特殊な値)が設定されます。但し、IDフィールドなどNULLを許容しない設定をしたフィールドがある場合、SQLの実行時にエラーとなってレコードは追加されません。

VALUESに続いて( )内に、先に列挙したフィールドに対応する値を「,」で区切って列挙すると、追加されたレコードの各フィールドにその値が設定されます。この場合も、値とフィールドのデータ型や桁数が合致していなければエラーになります。

フィールドリストと値リストはそれぞれ( )内に「,」で区切って列挙することに注意しましょう。



- INSERT命令の使用例 -

以下にINSERT命令の使用例を掲げておきます。

例)
テーブル「商品_mr」に、以下の値を格納したレコードを1件追加します。
   商品ID=998501/品名="ニワトリくん目覚まし時計"
   販売単価=1800/仕入単価=1280/在庫=10
  INSERT INTO 商品_mr
   (商品ID, 品名, 販売単価, 仕入単価, 在庫)
   VALUES (998501, 'ニワトリくん目覚まし時計', 1800, 1280, 10)

「品名」フィールドに設定する値「ニワトリくん目覚まし時計」は文字列(nvarchar型)なので、' 'で囲みます。それ以外は数値(int型とmoney型)なのでそのまま値を記述します。

SQL Serverの場合、レコードが追加されたかどうかは、Enterprise Managerで「テーブル」→「商品_mr」を選択して、メニューから「操作」→「テーブルを開く」→「全行を返す」を選択して確認できます。


- 重複追加に注意 -

INSERT命令でレコードを追加する場合、ここで例に挙げた「商品_mr」のようにIDフィールドが値の重複を許可しない設定となっているテーブルに対して同じSQLを重複して実行すると、当然のことながらエラーとなり、クエリアナライザの「メッセージ」ペインに以下のようなエラーメッセージが表示されます。

   サーバー : メッセージ 2627、レベル 14、状態 1、行 1
   PRIMARY KEY 違反、制約 'aaaaa商品_mr_PK': オブジェクト '商品_mr' には
   重複したキーは挿入できません。
   ステートメントは終了されました。

値の重複を許可するフィールドだけで構成されているテーブルでは、INSERT文を重複実行してもエラーとはなりません。その場合、まったく同じ内容のレコードがもう1件追加されることになります。



トップページ
データを加工する
レコードの追加~INSERT命令
フィールドと値を指定する
INSERT命令の使用例
重複追加に注意
テーブルを作成する命令~CREATE TABLE
SELECTとINSERTの組み合わせ
テーブルを作るもう一つの方法~INTO句
あとがき
Copyright © MESCIUS inc. All rights reserved.