前回は、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_id | user_name | password |
---|---|---|
1 | user1 | pass1 |
2 | user2 | pass2 |
3 | user3 | pass3 |
4 | user4 | pass4 |
5 | user5 | pass5 |
ここに、新しくユーザーを追加してみよう。
名前が「user6」、パスワードが「pass6」のデータを挿入してみる。
INSERT INTO user (user_id, user_name, password) VALUES (NULL, 'user6', 'pass6');
この1文を、SQL欄から実行してみよう。
その後テーブルの内容を確認し、最後の1行が追加されていればOKだ。
user_id | user_name | password |
---|---|---|
1 | user1 | pass1 |
2 | user2 | pass2 |
3 | user3 | pass3 |
4 | user4 | pass4 |
5 | user5 | pass5 |
6 | user6 | pass6 |
さて、勘のいい方はお気づきだろうが、ここまでの解説で一個おかしな点がある。
user_id列にNULL
を指定しているのに、データは6が入っている点だ。
実は、テーブル作成時にこのuser_id列にオートインクリメントを指定している。
このオートインクリメントは、値が追加されるごとに数字を1増やしながら勝手に入れてくれる機能だ。
テーブル作成時のカラム情報入力画面で、「A_I」という欄があったのを覚えているだろうか。
そこにチェックを入れ、実際のデータ入力時にNULL
を渡すことで、勝手に計算して数値を入力してくれる。
非常に便利な機能なので覚えておくといいだろう。
なお、別のデータを入れ、削除したような場合だと、ここの数字が7とか8とかになっていると思う。
この数字はデータを入れるごとに加算されていくので、例え途中でそのデータを消しても、その数字が二度使われることはない。
これも覚えておこう。
おわりに
今回は、テーブルにデータを挿入するINSERT文を解説した。
前回までのSELECT文と比べれば、かなり簡単だったと思う。
とはいえ、重要なことに変わりはないので、しっかり覚えておこう。
さて、次回はすでにあるデータを更新するUPDATE文を解説する。
これとさらにその次に解説する削除は気を付ける点があるので、そこもしっかり確認しながら進めよう。
コメント