本記事では、INSERTについて解説します。
INSERT文を使うことで、データベースに新しいデータを追加することが可能です。
バックエンドエンジニアを目指す方は、データベースからデータを取り出すだけでなく、データを追加することも多いので、INSERTの使い方をぜひ覚えてください。
SQLのINSERTとは?
INSERTとは、データベースにデータを追加するためのもののことです。
INSERTを使うことで、それぞれのカラムにデータを指定することができるようになります。
たとえば、出席名簿のデータベースを作成した際、新しい転校生が入ってきた場合に、データを後で追加することが可能です。
このように、データを追加することができるのが、INSERTですね。
SQLのINSERTの使い方
INSERTの具体的な使い方についてみていきましょう。
次の項目に従って解説していきます。
- INSERTでデータを入れる
- INSERTでnullを含めたデータを入れる
- INSERTでデータを複数に入れる
- AUTO INCREMENTで指定されている場合にINSERTでデータを入れる
なお、今回は『SQL入門編1』で作成したテーブルを使って解説します。『SQL入門編1』で演習用のテーブルを作っていない方は、【SQL入門編1】初心者必見!SQLのクエリの書き方を学ぼうを読んで予め作成してくださいね。
INSERTでデータを入れる
INSERT文の基本的な使い方を紹介します。
INSERT文で既存のテーブルにレコードを1つ増やしてみましょう。
○コード例
INSERT INTO TEST.Student (id, name, age, gender, TestScore, birthday)VALUES(11,'石田',13,'女',95,'2001/03/15');
SELECT * FROM TEST.Student;
○実行結果
上記のコードでは、TEST.Studentテーブルにデータを追加しています。
データを追加する場合は以下のように記述します。
INSERT INTO {テーブル名} ({カラム名})VALUES({データの中身});
カラム名とデータの中身は、それぞれカンマ区切りで入力してください。
INSERT文を使う場合は、全てのカラムを入力する必要があります。
これで、idが11のデータがデータベースに新しく追加されました。
これがINSERT文の基本的な使い方です。
INSERTでnullを含めたデータを入れる
INSERT文は全てのカラムを入力する必要があります。
それでは「NULL値」を入力したい場合はどうすれば良いでしょうか?
○コード例
INSERT INTO TEST.Student (id, name, age, gender, TestScore, birthday)VALUES(12,'山根',13,'男',NULL,'2001/03/15');
SELECT * FROM TEST.Student ORDER BY id DESC LIMIT 1;
○実行結果
NULLを含めたレコードを入力したい場合は、NULLであるカラムを「NULL」とそのまま記入すれば良いだけです。
これで、まだデータ内容が決まっていない箇所があっても、空欄状態のままデータベースに追加することができます。
INSERTでデータを複数に入れる
複数のレコードを追加したい場合、INSERTを何回も使えば可能です。
しかし、何回もINSERT文を使うのは面倒ですよね。
そんなときのために一回のINSERT文で、複数のレコードを追加する方法があるのです。
○コード例
INSERT INTO TEST.Student (id, name, age, gender, TestScore, birthday)VALUES(13,'石井',13,'男',47,'2001/02/14'),(14,'上原',13,'女',50,'2001/01/01');
SELECT * FROM TEST.Student ORDER BY id DESC LIMIT 2;
○実行結果
複数のレコードを追加する場合は、カンマ区切りで、({データの中身})をつなげます。
こうすることで、1つのINSERT文で複数のレコードを追加することが可能です。
AUTO INCREMENTで指定されている場合にINSERTでデータを入れる
データベースの特定カラムに「AUTO INCREMENT」という機能が使われることがあります。
AUTO INCREMENTが使われている場合、INSERTでわざわざ追加しなくても、自動で値が追加します。
たとえば、StudentテーブルのidカラムにAUTO INCREMENTが指定されていると仮定すると、以下の書き方が可能です。
○コード例
INSERT INTO TEST.Student (name, age, gender, TestScore, birthday)VALUES('石田',13,'女',95,'2001/03/15');
SELECT * FROM TEST.Student ORDER BY id DESC LIMIT 1;
上記のコードを見て分かる通り、idカラムを入力していません。
しかし、AUTO INCREMENTを指定している場合は、入力しなくても自動で値を追加してくれます。
補足:SQL文を見やすくするコツ
ここまでINSERT文の基礎を解説してきました。
ここまでみてきて「INSERT文って読みにくい」と思った方も多いかと思います。
確かにSQL文が長くなると、読みにくくなってしまい、ミスを誘発する可能性もありますよね。
そこで、SQL文を見やすくするコツを紹介します。
SQL文を書く場合、以下のように、改行して書くことも可能です。
○コード例
INSERT INTO TEST.Student
(id, name, age, gender, TestScore, birthday)
VALUES
(13,'石井',13,'男',47,'2001/02/14'),
(14,'上原',13,'女',50,'2001/01/01');
このように、改行して書くことで、INSERT文ですっきり見やすく書けます。
SQL文は改行して書くことも可能ということを覚えておきましょう。
ただし、SQL文の書き方は開発現場よって決まっていることもあるので、その場合は企業の方針に従ってください。
まとめ
本記事では、INSERTついて解説しました。
INSERTによってデータを追加する方法が、お分かり頂けたかと思います。
INSERT文はたまにしか使わないため、書き方を忘れてしまうことも多いでしょう。
書き方を忘れてしまった場合は、再度この記事を参考にしてくださいね。
次回は、UPDATEでデータを更新する方法を解説していきます。