データを追加する(INSERT文)

作成済みのテーブルにデータを追加するには INSERT 文を使用します。ここでは MariaDB でテーブルにデータを追加する方法について解説します。

(Last modified: )

テーブルに新しいデータを追加する

テーブルにデータを追加するには INSERT 文を使います。書式は次の通りです。

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
 [INTO] tbl_name [PARTITION (partition_list)] [(col,...)]
 {VALUES | VALUE} ({expr | DEFAULT},...),(...),...

テーブルにデータを追加する場合、テーブルに含まれるすべてのカラムに値を指定してデータを追加することもできますし、一部のカラムにだけ値を指定してデータを追加することもできます。一部のカラムにだけ指定した場合、指定されなかったカラムにはデフォルトの値が格納されます。

テーブルに含まれるすべてのカラムに値を指定してデータを追加する場合は次の書式を使用します。

INSERT INTO tbl_name VALUES (val,...)

tbl_name テーブルにデータを追加します。カラムの数だけ値を指定する必要があります。指定した値はテーブル内のカラムに順番に格納されていきます。

テーブルに含まれる一部のカラムにだけ値を指定する場合は次の書式を使用します。

INSERT INTO tbl_name (col1,col2,...) VALUES (val1,val2,...)

tbl_name テーブルにデータを追加します。指定したカラムの数だけ値を指定する必要があります。指定した値は指定したカラムに順番に格納されていきます。指定されなかったカラムにはデフォルト値が格納されます。

USE 文を使ってデータベースを選択していない場合は、どのデータベースにテーブルを作成するのかを示すために tbl_name の代わりに db_name.tbl_name のように記述します。

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

すべてのカラムに値を指定してデータを追加する

最初にテーブルに含まれるすべてのカラムに値を指定してデータを追加する場合です。次のようなテーブルを作成しました。 age カラムには DEFAULT 制約を使ってデフォルト値として 0 を指定しています。

create table user (id int, name varchar(10), age int default 0);

テーブルに新しいデータを追加する(1)

テーブルにデータを追加します。テーブルには 3 つのカラムがありますので 3 つの値を指定して次のように実行してください。

insert into user values(1, 'Yamada', 24);

テーブルに新しいデータを追加する(2)

テーブルにデータが追加されました。確認のためにテーブルからデータを取得してみます。

select * from user;

テーブルに新しいデータを追加する(3)

INSERT 文を実行するときに指定した 3 つの値が、テーブルの含まれるカラムの順番に従って格納されていることが確認できました。

なおこの書式を使用する場合は、必ずテーブルに含まれるカラムの数と同じ数の値を指定する必要があります。例えば user テーブルには 3 つのカラムが含まれるのに、 2 つの値だけを指定して INSERT 文を実行してみます。

insert into user values(2, 'Nitta');

テーブルを作成する(4)

「Column count doesn't match value count at row 1」というエラーが発生しました。もしテーブルのカラムの数と異なる値を指定してデータを追加する場合はこのあとで解説する書式を使用してください。

一部のカラムに値を指定してデータを追加する

次にテーブルに含まれる一部のカラムにだけ値を指定してデータを追加する場合です。値が指定されなかったカラムにはデフォルト値が格納尾されます。

先ほど作成した user テーブルにデータを追加します。 user テーブルには id 、 name 、 age の 3 つのカラムが含まれますが、最初に id カラムと age カラムに値を指定してデータを追加します。次のように実行してください。

insert into user (id, age) values(2, 30);

テーブルに新しいデータを追加する(5)

テーブルにデータが追加されました。指定したカラムの数と格納する値の数が一致している必要があります。確認のためにテーブルからデータを取得してみます。

select * from user;

テーブルに新しいデータを追加する(6)

今回は id カラムと age カラムに値を指定したので、追加されたデータの id カラムと age カラム には指定した値が格納され、値が指定されなかった name カラムにはデフォルトの値である NULL が格納されていることが確認できました。

それではもう一つデータを追加します。今度は id カラムと name カラムに値を指定してデータを追加します。次のように実行してください。

insert into user (id, name) values(3, 'Tanaka');

テーブルに新しいデータを追加する(7)

テーブルにデータが追加されました。確認のためにテーブルからデータを取得してみます。

テーブルに新しいデータを追加する(8)

今回は id カラムと name カラムに値を指定したので、追加されたデータの id カラムと name カラム には指定した値が格納され、値が指定されなかった age カラムにはデフォルト制約を使って指定されたデフォルトの値である 0 が格納されていることが確認できました。

値を指定するかわりにデフォルト値を使用するように指定してデータを追加する

INSERT 文を実行するときに値を格納するカラムを指定しない場合はカラムの数だけ値を指定する必要がありますが、値を指定するのではなくデフォルトの値を使用したい場合には、 値の代わりに DEFAULT と記述することができます。

例えば先ほど作成した user テーブルには id カラム、 name カラム、 age カラムの 3 つのカラムが含まれますが、 id カラムと name カラムには値を指定するけれど age カラムにはデフォルトの値が格納されるようにするには次のように記述することができます。

insert into user values(4, 'Kondo', DEFAULT);

これは次のように記述した場合と同じです。

insert into user (id, name) values(4, 'Kondo');

最初の書式を使用したいけれど、一部のカラムの値は直接値を指定したくない場合などに使用します。

それでは実際に試してみます。次のように実行してください。

insert into user values(4, 'Kondo', DEFAULT);

値を指定するかわりにデフォルト値を使用するように指定してデータを追加する(1)

テーブルにデータが追加されました。確認のためにテーブルからデータを取得してみます。

select * from user;

値を指定するかわりにデフォルト値を使用するように指定してデータを追加する(2)

id カラムと name カラムには指定した値が格納されますが、 DEFAULT 指定された age カラムにはデフォルト制約を使って指定されたデフォルトの値である 0 が格納されていることが確認できました。

すべてのカラムの値をデフォルト値を使用するように指定してデータを追加する

INSERT 文を実行するときにすべてのカラムの値にデフォルトの値を使用してデータを追加するには次の書式を利用することができます。

INSERT INTO tbl_name () VALUES();

それでは実際に試してみます。次のように実行してください。

insert into user () values();

すべてのカラムの値をデフォルト値を使用するように指定してデータを追加する(1)

テーブルにデータが追加されました。確認のためにテーブルからデータを取得してみます。

select * from user;

すべてのカラムの値をデフォルト値を使用するように指定してデータを追加する(2)

今回すべてのカラムにデフォルト値を格納するようにデータを追加しましたので、 id カラムと name カラムには NULL 、 age カラムにはデフォルト制約を使って指定されたデフォルトの値である 0 が格納されていることが確認できました。

値のかわりに式を指定してデータを追加する

データを追加するとき、カラムに値を指定するだけでなく式を記述することができます。演算子や関数を使ったりする他に、既に値が指定された別のカラムの値を参照することができます。

実際に試しながら確認してみます。次のようなテーブルを作成しました。

create table seiseki (name varchar(10), suugaku int, kokugo int, heikin int);

値のかわりに式を指定してデータを追加する(1)

データを追加する時、 name カラム、 suugaku カラム、 kokugo カラムには値を指定しますが、 heikin カラムには suugaku カラムと kokugo カラムの値を利用して (suugaku + kokugo) と指定します。このように既に値が指定されたカラムに関しては、カラム名を指定すると値を参照することができます。

では実際にデータを追加してみます。

insert into seiseki values ('Yamada', 85, 71, (suugaku + kokugo) / 2);

値のかわりに式を指定してデータを追加する(2)

テーブルにデータが追加されました。確認のためにテーブルからデータを取得してみます。

select * from seiseki;

値のかわりに式を指定してデータを追加する(3)

name カラム、 suugaku カラム、 kokugo カラムには指定した値が格納されています。そして heikin カラムは suugaku カラムと kokugo カラムに格納された値を使って (85 + 71) / 2 = 78 という演算結果が格納されていることが確認できました。

複数のデータをまとめて追加する

一度の INSERT 文で複数のデータをまとめて追加することができます。次の書式を使用します。

INSERT tbl_name VALUES (val,...),(val,...)

追加するデータを ( から ) の間に記述し、追加するデータの数だけカンマで区切って繰り返し記述します。

特定のカラムだけ値を指定してデータを追加する場合も同じようにまとめてデータを追加できます。

INSERT tbl_name (col1,col2,...)
  VALUES (val1,val2,...),(val1,val2,...)

それでは実際に試してみます。先ほど作成した user テーブルからデータをいったんすべて削除したあとで、次のように実行してください。

insert into user values (1, 'Suzuki', 18),(2, 'Kondo', 24),(3, 'Takahashi', 21);

複数のデータをまとめて追加する(1)

3 つのデータをまとめて追加しました。確認のためにテーブルからデータを取得してみます。

select * from user;

複数のデータをまとめて追加する(2)

3 つのデータが記述した順番にテーブルに格納されているのが確認できました。

-- --

MariaDB でテーブルにデータを追加する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。