データベース初心者必見!入門編その11〜INSERT文によるデータの追加〜
2015/08/17
はじめに
今回は、入門編その1、入門編その2、入門編その3、入門編その4、入門編その5、入門編その6、入門編その7、入門編その8、入門編その9、入門編その10の続きです。
ここまでは、SELECTを使って問い合わせたを行うことで、テーブルにすでにある行を検索していました。データベースにデータが登録されていなければ問い合わせを行うこともできません。
ここからは、テーブルにデータを追加するINSERT文、テーブルに存在するデータを更新するUPDATE文、テーブルのデータを削除するDELETE文を紹介します。
すでに、紹介しましたが、SELECT文、INSERT文、UPDATE文、DELETE文を合わせてDML(Date Manipulate Language):データ操作言語)と呼びます。※SELECT文はDMLの分類から外れることもあります。
今回はDMLの中でもデータを追加するINSERT文について紹介します。
データの追加
テーブルにデータを追加するにはINSERT文を使用します。
たとえば、下のようなfoodテーブルがあったとしましょう。
foodテーブル
たとえば、foodテーブルに次のようなデータを追加したいとしましょう。
このデータを追加するには次のSQLを発行します。
[shell]INSERT INTO food VALUES
(5,’つけ麺’,25,3) [/shell]
では本当にデータを追加することができたかfoodテーブルを見てみましょう。
[shell]SELECT * FROM food [/shell]
実行結果
正常にデータを追加することができました。
INSERT文の詳細を説明します。
INSERT文の詳細
INSERT文の冒頭には「INSERT INTO テーブル名」を記述します。どのテーブルに追加するかという指定です。その後VALUES句を記述しカコで括った中にテーブルの列に対応するカンマ区切りで列挙します。
[shell]INSERT INTO テーブル名 VALUES (値のリスト) [/shell]
また、列にはデータ型が定義されているので、数値型の列には数値リテラルを、文字列型の列には文字列リテラルを、日付型の列には日付リテラルを、それぞれの表記で値のリストに記述しなくてはなりません。各データ型の表記法については後の記事で紹介いたします。
先ほどのINSERT文は、すべての列に対して値を指定してデータを追加するものでした。
値を指定しない場合のデータの挿入
INSERT文は値を入力する列を限定してデータを追加することもできます。今度は次のデータを入力したいとします。food_name列には何も値を指定せずにデータを入力します。
[shell]INSERT INTO food VALUES (food_id,food_stock,ctg_id)
VALUES(6,9,3)[/shell]
SQLを発行して、foodテーブルのデータに「food_name」を確認してみましょう。
実行結果
データが追加されました。今回はfoodテーブルの3つの列にのみ値を指定してデータの追加を行いました。
また、値を指定しなかった列にはれつにあらかじめ定義されているデフォルトの値が登録されます。デフォルト値の定義がない列には、NULL値が登録されました。
明示的にNULL値に登録されるときには「NULL」と記述し、デフォルトの場合には「DEFAULT」と記述します。また、関数を使用して値を登録することもできます。日付のデータ型である場合ににはCURRENT_TIMESTAMP()などを使うとよいでしょう。
INSERT文の記述方法
[shell]INSERT INTO テーブル名(列名のリスト)VALUES (値のリスト) [/shell]
さいごに
今回はテーブルにデータを挿入するINSERT文について紹介しました。
次回は、テーブルに入っているデータの更新する方法、削除する方法と紹介していきます。