続いて作成した categories テーブルにレコードを作成する方法を見ていきましょう。

SQLにおいてテーブルにレコードを作成するには insert 文を使います。

insert into categories (id, title) values (1, 'Programming');

insert 文は次のような構文になります。

insert into テーブル名 (列名, ...) values (データ, ...);

さきほどのSQL文の場合はレコードの登録対象のテーブル名は categories テーブルです。テーブル名のあとの()の中には列名を記載するので、id 列、title 列を定義しています。データを登録しない列名は省略しても大丈夫です。それから values のあとの()の中には実際に登録するデータを , で区切って並べていきます。データの並び順はさきほどの列名の並び順と関係しているので、この場合、先頭のデータが id 列、 2つ目のデータが title 列に登録されます。

insert into categories values (1, 'Programming'); のように列名を省略することもできます。この場合、テーブルのすべての列名が登録の対象となります。

それから values で指定するデータに注目すると ' シングルクォーテーションで囲まれているものとそうでないものがあります。SQLでは文字型データや日付型データは ' シングルクォーテーションで囲む必要があります。数値型データに ' シングルクォーテーションは不要です。

それでは実際にMySQLクライアントプログラムから insert 文を実行してみましょう。

MariaDB [eldb]> insert into categories (id, title) values (1, 'Programming');
Query OK, 1 row affected (0.01 sec)

MariaDB [eldb]> 

Query OK と表示されればSQLは正しく処理されています。

複数レコードの登録

categories テーブルに1件のレコードを作成できたので、ここではあと2件レコードを作成してみようと思います。

insert into categories (id, title) values (2, 'Design');
insert into categories (id, title) values (3, 'Marketing');

上記の2つのSQLを実行すれば categories テーブルには合計3件のレコードが作成されます。実際にMySQLクライアントプログラムからSQLを実行してみましょう。

MariaDB [eldb]> insert into categories (id, title) values (2, 'Design');
Query OK, 1 row affected (0.00 sec)

MariaDB [eldb]> insert into categories (id, title) values (3, 'Marketing');
Query OK, 1 row affected (0.01 sec)

MariaDB [eldb]> 

Query OK と表示されればSQLは正しく処理されています。

主キー制約について

これまでに3件のレコードが登録できたので、もう1件レコードを追加してみましょう。

insert into categories (id, title) values (3, 'Music');

実はこのSQL文を実行すると次のようなエラーが出力されます。

MariaDB [eldb]> insert into categories (id, title) values (3, 'Music');
ERROR 1062 (23000): Duplicate entry '3' for key 'PRIMARY'
MariaDB [eldb]> 

エラーメッセージは ERROR 1062 (23000): Duplicate entry '3' for key 'PRIMARY' となっているのがわかります。これは categories テーブルの id 列に定義した主キー制約(primary key制約)に違反しているということを意味しています。主キー制約を定義した列のデータは一意である(重複してはいけない)必要があるため、id 列に 3 という値は指定できないのです。

categories テーブルにはすでに id3 のレコードは登録済みのため、主キー制約(primary key制約)に違反するということになります。

レコードの作成方法については以上です。次は作成した3件のレコードを表示する(検索する)方法について見ていきましょう。

まとめ

  • テーブルにレコードを作成するには insert 文を使う
  • 文字型データや日付型データなどは '' で囲む必要がある
  • レコード追加時には制約(主キー制約など)に注意する