値を格納するカラムを指定

INSERT文では対象のテーブルのカラム数と同じ数の値を指定する必要がありますが、テーブル内の指定したカラムだけの値を指定してデータを追加することも可能です。次の書式を使います。

INSERT INTO テーブル名(カラム1, カラム2, ...) VALUES(値1, 値2, ...);

値を格納したいカラムをテーブル名の後の「(」から「)」の間に指定します。複数のカラムがある場合はカンマ(,)で区切って記述して下さい。そして指定したカラムの数と同じだけの値を指定します。

データが追加された時、指定されたカラムには値が格納されますが、指定されなかったカラムにはDEFAULT制約が設定してあればデフォルトの値が格納され、DEFAULT制約が設定されていなければNULLが格納されます。(DEFAULT制約については「DEFAULT制約」を参照して下さい)。

具体的には次のようになります。

create table customer(id integer, name text, address text default 'no value');

insert into customer(id, name) values(2, '近藤');
insert into customer(id) values(3);

「customer」テーブルには3つのカラムが含まれています。カラムを2つ指定した場合は値も2つ指定し、カラムを1つ指定した場合は値も1つ指定します。値が指定されなかったカラムにはデフォルト値があればデフォルト値を、なければNULLが格納されます。

サンプル

では実際に試してみます。

元となるテーブルを作成します。

p2-1

テーブルには3つのカラムが含まれます。その中で「address」カラムにはDEFAULT制約を設定しデフォルト値として'未入力'を指定してあります。ではデータを1件追加してみます。

p2-2

「id」カラムと「address」カラムを指定してデータを追加しています。2つのカラムを指定していますので値も2つ記述する必要があります。ではテーブルからデータを取得して表示してみます。

p2-3

追加されたデータには「name」カラムに値を指定していないためNULLが格納されています。

では今度は「id」カラムと「name」カラムに値を指定してデータを追加してみます。

p2-4

追加されたデータには「address」カラムに値を指定していませんが、「address」カラムにはDEFAULT制約が設定されているためデフォルト値の'未入力'が格納されています。