【SQL初級編1】INSERTでテータベースにデータを追加しよう

SQL入門

本記事では、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でデータを更新する方法を解説していきます。

手に職をつけてプログラマー転職

そろそろ本気で将来のことを考えなくちゃ……手に職をつけてプログラマーやエンジニアに転職したいなぁ。でも、プログラミングスクールってものすごくたくさんあるし、なんか敷居が高いのよね

これからプログラマーやエンジニアへの転身を目指すあなたに、どのスクールがもっとも適しているのかを紹介します。

SQL入門
【この記事を書いた人】
谷津弘樹

某自社開発のIT企業に勤めていた元webプログラマーです。主にサーバーサイド側を担当し、phpを使った開発経験があります。現在は退職しフリーランスライターとして活動中。IT系の記事を主に執筆し生計を立てています。

CANIT
タイトルとURLをコピーしました