【PHP講座18】SQL編5 -データの挿入-

PHP講座

前回は、SELECT文で複数のテーブルを結びつける結合を解説した。

初学者にとってはかなりの山場になるので、落ち着いて一個一個確認しながら進めよう。

以下がその記事だ。

【PHP講座17】SQL編4 -テーブルの結合- | Shino’s Mind Archive

さて、SELECT文の解説はいったん前回で終わりにする。

今回は、テーブルに新しくデータを追加するINSERT文を解説しよう。

ここからは、前回までのSELECT文ほど難しくはない

各文で何をするのか、把握しながら進めていこう。

スポンサーリンク

テーブルにデータを挿入するINSERT文

さて、前回までのSELECT文は何をするものだったかをごく簡単に復習しておこう。

そもそも、MySQLにはテーブルという形式でデータが保存されていた。

前回までのSELECT文は、すでに入っているデータを、欲しい形で出力するためのものだった。

つまり、中に入っているデータには影響が一切なかった

しかし、実際のWebアプリケーションでデータが一切変わらないということはまずないだろう。

というわけで、今回から解説する挿入更新削除必須の内容だ。

その中でも、今回解説するINSERT文は、その名の通りデータを新しく追加するための構文

構文の構造はごく簡単なものなので、そこまで手こずることはないだろう。

INSERT文の構文

では、その構文を見ていこう。

INSERT INTO テーブル名 (列名1, 列名2, ...) VALUES (値1, 値2, ...);

このような形だ。

テーブル名に、データを挿入する対象のテーブル名を入れる。

その直後に小括弧で、データを入れる列を列挙していく。

そして、VALUESという文言を挟み、実際の値をこれまた小括弧で囲んで並べていく形だ。

列名と実際の値は同じ順番で書く必要がある。

基本的には、これだけだ。

が、いくつか注意点がある。

まず、挿入する値が文字列の場合

これは、その文字列をシングルクォーテーションで囲む必要があるので気を付けよう。

これは、SELECT文で条件に文字列を指定する場合と同じだ。

次に、その列には値を入れたくない場合

これまで紹介してきた具体例では、必ず全ての列に何かしらのデータが入っていた。

しかし、テーブルの定義によってはデータを入れないこともできる

その場合、NULLという記述をしてあげる。

このNULLは、SQLに限らず多くの言語で何もないことを表す。

SQLの場合は大文字、小文字どちらでも構わないが、言語によってはどちらか固定のものもあるので気を付けよう。

その他、列名の列挙で省略することで、その列に値を入れないこともできる

INSERT文具体例

では、具体例を見ていこう。

前回作ったuserテーブルに対して、新しく値を入れてみようと思う。

先に、前回の例通りに作成していた場合のテーブルの状態を載せておく。

user_iduser_namepassword
1user1pass1
2user2pass2
3user3pass3
4user4pass4
5user5pass5
userテーブル

ここに、新しくユーザーを追加してみよう。

名前が「user6」、パスワードが「pass6」のデータを挿入してみる。

INSERT INTO user (user_id, user_name, password) VALUES (NULL, 'user6', 'pass6');

この1文を、SQL欄から実行してみよう。

その後テーブルの内容を確認し、最後の1行が追加されていればOKだ。

user_iduser_namepassword
1user1pass1
2user2pass2
3user3pass3
4user4pass4
5user5pass5
6user6pass6
userテーブル(INSERT後)

さて、勘のいい方はお気づきだろうが、ここまでの解説で一個おかしな点がある。

user_id列にNULLを指定しているのに、データは6が入っている点だ。

実は、テーブル作成時にこのuser_id列にオートインクリメントを指定している。

このオートインクリメントは、値が追加されるごとに数字を1増やしながら勝手に入れてくれる機能だ。

テーブル作成時のカラム情報入力画面で、「A_I」という欄があったのを覚えているだろうか。

そこにチェックを入れ、実際のデータ入力時にNULLを渡すことで、勝手に計算して数値を入力してくれる。

非常に便利な機能なので覚えておくといいだろう。

なお、別のデータを入れ、削除したような場合だと、ここの数字が7とか8とかになっていると思う。

この数字はデータを入れるごとに加算されていくので、例え途中でそのデータを消しても、その数字が二度使われることはない

これも覚えておこう。

おわりに

今回は、テーブルにデータを挿入するINSERT文を解説した。

前回までのSELECT文と比べれば、かなり簡単だったと思う。

とはいえ、重要なことに変わりはないので、しっかり覚えておこう。

さて、次回はすでにあるデータを更新するUPDATE文を解説する。

これとさらにその次に解説する削除は気を付ける点があるので、そこもしっかり確認しながら進めよう。

コメント

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