テーブルにレコード(行)を挿入する
今回はテーブルに行を追加してみます。
前回の記事で作ったmembersテーブルに行を挿入します。
データベースにmembersテーブルを作っておきましょう。
CREATE TABLE members (
id serial PRIMARY KEY,
name varchar(50) NOT NULL,
age integer NOT NULL,
address varchar(200),
registed_at timestamp NOT NULL
);行のことをレコードと呼ぶことが多いです。ここでもレコードと呼ぶことにします。
テーブルにレコードを挿入するには、INSERTを使います。さっそく書いてみましょう。
INSERT INTO members
VALUES(1, 'Jacob Byatt', 30, '133-17 Sakuradani', '2020-06-19 00:29:00');phpMyAdminでクエリを実行してみましょう。
クエリが正常に実行されると、membersテーブルにレコードが追加されたことがわかります。


INSERT文の書き方は次のとおりです。
INSERT INTO テーブル名
VALUES (値1, [値2]...);VALUES ( )の中に、レコードの各列に書き込む値をカンマ区切りで順に書きます。順番はCREATE TABLEで列を定義した順番と同じです。
データ型に合わせて、文字列ならばシングルコート(‘)で囲み、数値ならそのまま数値を書きます。これはプログラムのデータ型と同じです。
値を書き込む列を指定する書き方もできます。
INSERT INTO members (name, age, registed_at)
VALUES('Lidia Scianna', 24, '2020-06-19 01:03:55');書き方は次のとおりです。
INSERT INTO テーブル名 (列1, [列2]...)
VALUES (値1, [値2]...);この場合、name列 、age列、registed_at列にだけ値を書き込みます。
address列はNOT NULLではないので、値を書かないということができます。逆にNOT NULLの列に値を書かなかった場合は、クエリはエラーとなりレコードは挿入されません。
id列はPRIMARY KEY(主キー)であるため値を書く必要があるはずですが、このクエリでは省略しています。しかしエラーにはなりません。
id列はデータ型をinteger型ではなくserial型にしています。serial型を指定すると、値を自動的に連番で付けてくれるようになります。これをオートインクリメントと言います。INSERT文で列を指定しなかった場合に、オートインクリメントによって自動的に値を書き込んでくれるのです。
