INSERT文を使ってテーブルにデータを追加する方法について記録します。
全てのカラムに値を指定してデータを追加する以外に、カラムを指定してデータを追加することもできます。
全てのカラムに値を指定してデータを追加する
INSERT INTO テーブル名 VALUES(値1, 値2, ...);
対象となるテーブルに含まれるカラムと同じ数の値を指定します。
値は記述された順にカラムに格納されていきますので、値を格納したいカラムの順番と同じ順番で値を指定します。
テスト用にテーブルを作成します。
CREATE TABLE testUSER(id INTEGER, name TEXT, old INTEGER, address TEXT);
このテーブルには4つのカラム id、name、old、addressがあります。
このテーブルにデータを追加する場合は、4つの値をカラムの順番に沿って記述して追加します。
例えば 1、'Yamada'、19、'Tokyo'です。では実際にデータを追加してみます。
INSERT INTO testUSER VALUES(1, 'Yamada', 19, 'Tokyo');
エラーが出ないことを確認して、引き続き下記のように、データを追加します。
INSERT INTO testUSER VALUES(2, 'Mori', 32, 'Kyoto');
INSERT INTO testUSER VALUES(3, 'Ueda', 27, 'Tokyo');
INSERT INTO testUSER VALUES(4, 'Mitsui', 20, 'Nagoya');
これでテーブルには4つのデータが追加されました。
SELECT文を使ってテーブルからデータを取得してみます。
SELECT * FROM testUSER;
id name old address
---------- ---------- ---------- ----------
1 Yamada 19 Tokyo
2 Mori 32 Kyoto
3 Ueda 27 Tokyo
4 Mitsui 20 Nagoya
特定のカラムだけに値を指定してデータを追加する
INSERT INTO テーブル名(カラム1, カラム2, ...) VALUES(値1, 値2, ...);
新たにテーブルを作成します。
CREATE TABLE testUser2(id INTEGER, name TEXT, address TEXT DEFAULT 'NO VALUE');
テーブルには3つのカラムがあり、 address カラムにはデフォルト制約が設定されています。
まずは3つのカラムに全て値を指定してデータを追加します。
INSERT INTO testUser2(id, name, address) VALUES(1, 'Honda', 'Tokyo');
次に2つのカラムだけに値を指定してデータを追加してみます。
1つ目は、idカラムとnameカラムだけ、
2つ目は、idカラムとaddressカラムだけに値を指定してデータを追加します。
INSERT INTO testUser2(id, name) VALUES(2, 'Okada');
INSERT INTO testUser2(id, address) VALUES(3, 'Mori');
これでテーブルには先ほどのと合わせて3つのデータが追加されました。それでは SELECT 文を使ってテーブルからデータを取得してみます。
SELECT * FROM testUser2;
id name address
---------- ---------- ----------
1 Honda Tokyo
2 Okada NO VALUE
3 Mori
2つ目のデータを追加した時には、addressカラムの値を指定していなかったのですが、addressカラムにはデフォルト制約が設定されていたためデフォルト値である'no value'が格納されています。
3つ目のデータを追加した時には、nameカラムの値を指定していなかったので、デフォルト値であるNULLが格納されています(NULLは画面上では何も表示されません)。
このようにテーブルに含まれるカラムの中で一部のカラムだけに値を指定してデータを追加することができます。
尚、データを追加する時に記述するカラムの順番はテーブルで定義されているカラムの順番通りである必要はありません。
次の2つは同じ結果となりエラーにもなりません。
INSERT INTO user(id, name) VALUES(2, 'Ueda');
INSERT INTO user(name, id) VALUES('Ueda', 2);
値を指定せずにデータを追加する
値を1つも指定せずにデータを追加することもできます。この場合は全てのカラムにデフォルトの値が格納されます。
INSERT INTO テーブル名 DEFAULT VALUES;
それでは実際に試してみます。テーブルは先ほどと同じtestUser2をそのまま利用します。
CREATE TABLE testUser2(id INTEGER, name TEXT, address TEXT DEFAULT 'NO VALUE');
値を指定せずにデータを追加します。
INSERT INTO testUser2 DEFAULT VALUES;
SELECT * FROM testUser2;
id name address
---------- ---------- ----------
1 Honda Tokyo
2 Okada NO VALUE
3 Mori
NO VALUE
追加されたデータは値が指定されていませんので、デフォルト制約が設定されていないidカラム、nameカラムにはデフォルト値のNULLが格納され、デフォルト制約が設定されているaddressカラムには設定されているデフォルト値が格納されました。
このように値を1つも指定せずにデータをテーブルに追加することが可能です。