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

MySQL では新しいデータを追加するときに INSERT 文を使用します。ここでは MySQL でデータを追加する方法について解説します。

(Last modified: )

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

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

INSERT [INTO] tbl_name
    [(col_name [, col_name] ...)]
    {VALUES | VALUE} (value_list) [, (value_list)] ...

テーブル名( tbl_name )を指定してデータを追加します。

テーブルに含まれる特定のカラムを指定してデータを追加する場合は次のように記述します。(指定しなかったカラムにはデフォルトの値が格納されます)。カラム名の数と値の数は同じでなくてはなりません。

INSERT INTO tbl_name (col_name1, col_name2, ...) VALUES (value1, value2, ...)

テーブルに含まれるすべてのカラムに値を指定してデータを追加する場合はカラム名の指定を省略して次のように記述することができます。

INSERT INTO tbl_name VALUES (value1, value2, ...)

-- --

では実際に試してみます。次のようなテーブルを作成しました。

create table user (id int, name varchar(10), address varchar(10));

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

テーブルに新しいデータを追加します。まずはすべてのカラムの値を指定してデータを追加してみます。

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

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

データが追加されたかどうか確認するために SELECT 文を使ってテーブルに追加されたデータを取得してみます。

select * from user;

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

テーブルにデータが追加されていることが確認できました。

-- --

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

insert into user (id, name) values (2, 'Suzuki');

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

テーブルに追加されたデータを取得して確認します。

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

データを追加するときに address カラムには値を指定しませんでしたので、デフォルトの値である NULL が格納されています。

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

INSERT 文を実行するときに値を指定するのではなくデフォルトの値を使用したい場合には、 値の代わりに DEFAULT と記述することができます。

例えば先ほど作成したテーブルにデータを追加するときに id カラムと name カラムには値を指定するけれど address カラムにはデフォルトの値が格納されるようにするには次のように記述します。

insert into user values (3, 'Hoshino', default);

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

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

カラム数がとても多いテーブルなどで、一部のカラムだけ値を指定せずにデータを追加する場合ときに便利です。

-- --

では実際に試してみます。先ほど作成したテーブルで id カラムと name カラムに値を指定し、 address カラムにはデフォルト値が格納されるようにデータを追加してみます。

insert into user values (3, 'Hoshino', default);

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

テーブルに追加されたデータを取得して確認します。

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

追加されたデータの address カラムにはデフォルトの値である NULL が格納されていることが確認できました。

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

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

INSERT INTO tbl_name () VALUES();

では実際に試してみます。先ほど作成したテーブルで、すべてのカラムでデフォルト値が格納されるようにデータを追加してみます。

insert into user () values ();

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

テーブルに追加されたデータを取得して確認します。

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

追加されたデータのすべてのカラムにはデフォルトの値である NULL が格納されていることが確認できました。

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

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

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

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

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

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

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

insert into seiseki values ('Yamada', 85, 72, suugaku + kokugo);
insert into seiseki values ('Suzuki', 68, 94, suugaku + kokugo);
insert into seiseki values ('Endou', 74, 76, suugaku + kokugo);

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

それではテーブルからデータを取得してみます。

select * from seiseki;

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

それぞれのデータで goukei カラムには suugaku カラムと kokugo カラムの合計が格納されているのが確認できます。

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

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

INSERT INTO tbl_name VALUES 
  (value1, value2, ...), 
  (value1, value2, ...), ...

カラムを指定してデータを追加する場合は次の書式を使用します。

INSERT INTO tbl_name (col_name1, col_name2, ...) VALUES
 (value1, value2, ...),
 (value1, value2, ...), ...

では試してみます。次のようなテーブルを作成しました。

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

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

3 つのデータをまとめて追加します。

insert into mycolor values (1, 'Red'), (2, 'Blue'), (3, 'Yellow');

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

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

select * from mycolor;

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

3 つのデータがテーブルに追加されていることが確認できました。

-- --

INSERT 文を使ってテーブルにデータを追加する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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