データベースにデータを登録する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文を使う。

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

コロナの影響でみんな大変だから俺もなんかできること

僕は福井県に住んでいるのですが、戦時中に福井大空襲にあい、その直後に大震災にあってボロボロになった話をおばあちゃんに聞きました。

それでも復活することができ、不死鳥の町と言われるようになりました。

先人達には心から感謝し尊敬します。

リーマンショック、東日本大震災、コロナと数十年に一度と言われる被害が立て続けに起きていますが、僕たちは強いです。

今は苦しいかもしれませんがきっと復活できます。

僕は低学歴ですし小さな小さな粒でしかないですが、プログラミングに関しては必死に勉強し15年以上ごはんにありつけています。

プログラミングを勉強している人の役に立てるほどのスキルはあると思っています。

なので1人でもんもんと悩んでいる若手のエンジニア向けに質問を受け付けることにします。

自宅で待機されている間もパソコンとインターネットがあればプログラミングの勉強はできます。

  • PHP
  • SQL
  • HTML・CSS
  • jQuery

とは言ってもいきなり答えを聞いていたのではなかなか成長できないと思うのです。

なので質問の際には次のことをご連携ください。

  • 何をやりたいか
  • どんなことを調べたか、検索キーワードと参考にしたページのURL
  • 調べた結果どこが分からないか
  • できるなら試したコード

メッセージいはとりあえずTwitterにでもください。

質問はこちら

すぐに返事できないかもしれませんがご了承ください。

コメントを残す

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

CAPTCHA