データベースにデータを登録するINSERT文(SQL)の基礎と構成

RDBのテーブルにデータを挿入する方法です。

タイトルでは登録と書きましたが、SQLの世界では挿入と言います。

登録は英語で regist で、挿入は英語で insert です。

SQLでデータを挿入する場合は INSERT文を使います。

 

テーブルの作成がまだの方はこちらの「SQLでテーブルを作成するCREATE文」をご確認ください。

上の記事で作成したテーブルにデータを挿入するサンプルを用いて説明します。

データを挿入するINSERT文のサンプル

カラムが2つだけの以下のコードのテーブルがあります。

これに対しデータを挿入するSQLはこうなります。

これで1件のデータが挿入できますが、複数件ある場合はこう書きます。

 

上のサンプルはユーザーテーブル(user)用なので、商品テーブル(product)と購入履歴テーブル(history)のサンプルデータの作成コードも下に記載しておきます。

商品テーブル(product)

購入履歴テーブル(history)

INSERT文の解説

INSERT文の構成

INSERT文の構成は以下のようになります。

INSERT INTO テーブル名 (カラム名1, カラム名2, ・・・) VALUES (カラム名1に対応する値, カラム名2に対応する値, ・・・);

VALUES の後の (カラム名1に対応する値, カラム名2に対応する値, ・・・) の部分が実際に登録される値になります。

 

カラム名の順番は登録された順番じゃなくてもいいです。

しかし、定義した順番と値の順番は一致していなければいけません。

 

また、カラム名は全て定義する必要はありません。

今回の例のテーブルはカラムが2つあり、その2つともが NOT NULL なので書く必要がありました。

しかし、カラム数が10個20個となってくると、その時は必要ない情報などもあります。

その場合は登録する情報分だけカラムを定義します。

複数行登録する

INSERT INTO テーブル名 (カラム名1, カラム名2, ・・・) VALUES (1件目のデータ), (2件目のデータ), ・・・;

(1件目のデータ) と省略しましたが、(カラム名1に対応する値, カラム名2に対応する値, ・・・)と同じです。

 

データが複数ある場合は、VALUES の後に (1件目のデータ), (2件目のデータ), ・・・ とカンマ区切りで書きます。

 

仮にまとめて登録するデータが100件くらいあるのでしたらまとめて1つのSQL文にしたほうがパフォーマンスはいいですが、10件程度ならば1行ずつINSERTしたほうがバグが出る確率は減ります。

上の例はまだカラムが2つしかないシンプルなものですが、カラムが30個くらいあって100件のデータを登録となったらかなり慎重になります。

もし、登録途中の30件目くらいで不正なデータが含まれていて処理が中断された場合など、どこまでを元に戻すか判断できないレベルになります。

そんなに複数行をまとめて登録する場面はあまり無いですが、事前にチェックする内容をより厳しくすれば大丈夫です。

まとめ

データベースにデータを登録するためのSQLはINSERT文を使う。

複数行を登録する場合は慎重に行わないと、もし途中で失敗した場合は復帰がたいへん。

コメントを残す

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

CAPTCHA