続いて作成した 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
テーブルにはすでにid
が3
のレコードは登録済みのため、主キー制約(primary key制約)に違反するということになります。
レコードの作成方法については以上です。次は作成した3件のレコードを表示する(検索する)方法について見ていきましょう。
まとめ
- テーブルにレコードを作成するには
insert
文を使う - 文字型データや日付型データなどは
''
で囲む必要がある - レコード追加時には制約(主キー制約など)に注意する