表を定義するとき、表に含まれるそれぞれの列には、省略値を定義しておくことができます。INSERT文では、その省略値を使用してデータを追加することができます。省略値が定義されていない列を省略した場合には、その列にNULL値が追加されますが、NOT NULL制約がある列はNULL値を設定できないのでエラーとなります。なお、省略値のことを“既定値”とも呼びます。
追加するデータの特定の列に省略値を設定する
追加するデータの特定の列に省略値を設定する場合、INSERT文の挿入値リストには、キーワードの“DEFAULT”を指定します。このとき、挿入列リストは省略値を設定する列の列名を省略することはできません。2つの列に省略値を設定する例を以下に示します。
発注表にデータを1行追加します。追加するデータは、取引先を“78”、取引製品を“400”とし、仕入価格と発注数量は列に定義された省略値とします。
INSERT INTO 在庫管理.発注表 (取引先, 取引製品, 仕入価格, 発注数量)
↑ ↑
VALUES (78, 400, DEFAULT, DEFAULT) 列名は省略できません。
図6.2 省略値を使用したデータの追加
注) 仕入価格に定義された省略値は50000、発注数量に定義された省略値は100とします。
追加するデータの特定の列に省略値を設定する場合、キーワードの“DEFAULT”を指定する代わりに、挿入値リストの値を省略する方法もあります。このとき挿入列リストも、省略値を設定する列の列名を省略します。例1のINSERT文の挿入値リストと挿入列リストを省略した場合の例を以下に示します。
追加する値と追加する列を省略する例です。追加するデータは例1と同じとします。
INSERT INTO 在庫管理.発注表(取引先, 取引製品) ↑ VALUES(78, 400) | ↑ 仕入価格と発注数量は省略します。 | 仕入価格と発注数量の値は省略します。
追加するデータのすべての列に省略値を設定する