テーブルにレコード(行)を挿入する

今回はテーブルに行を追加してみます。
前回の記事で作った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テーブルにレコードが追加されたことがわかります。

クエリ実行結果
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文で列を指定しなかった場合に、オートインクリメントによって自動的に値を書き込んでくれるのです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

SQL

前の記事

テーブル(表)を作る