第15回 更新処理を覚えよう - MySQL講座
サカイ先生のMySQL講座
Lecutures on PHP
第15回 更新処理を覚えよう (その2)
INSERTの練習
- レッスンの最初のほう(第8回参照)でデータの登録作業をしたよね。僕が用意してあげたファイル(phppro2data.zip)を mysql コマンドに流し込んだと思うけど、あの中身を見たことはある?
- 見ていないと思います。あの頃はとにかく言われたことをやるだけで必死でしたから。。
- あの中には、テーブル生成(CREATE TABLE)文に続いて、たくさんの INSERT 文が並んでいるんだ。見てみると、あまりのわかりやすさにびっくりすると思うよ。
- そうなんですね。あとで見てみることにします。
- じゃぁ、ここでは簡単な INSERT 文を一回、自分の手で書いてみる練習をしてみようか。顧客(customers)テーブルに太郎君を登録することにしよう。 まず最初に customers テーブルのレイアウトの確認だ。 customers テーブルはこんなレイアウトになっている。
mysql> desc customers; +-----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(64) | YES | | NULL | | | zip | varchar(8) | YES | | NULL | | | prefecture_code | char(2) | YES | | NULL | | | address | varchar(255) | YES | | NULL | | | birthday | date | YES | | NULL | | | regist_date | datetime | YES | | NULL | | | unregist_date | datetime | YES | | NULL | | +-----------------+--------------+------+-----+---------+----------------+ 8 rows in set (0.02 sec)
- そして登録したい僕の情報は、こんな感じですね。
id : MySQLに採番してもらう name : "ぼくは 太郎" zip : "123-4567" prefecture_code : "13" address : "東京都のどこか" birthday : 1985-11-05 regist_date : 今の日時 unregist_date : まだやめてない
- この情報で INSERT 文を作れるかな?
- こうでしょうか。
INSERT INTO customers VALUES (NULL, "ぼくは 太郎", "123-4567", "13", "東京都のどこか", "1985-11-05", now(), null);
- うん、いいね。 VALUE の前に 登録したいカラム名を ( ) の中にコンマで区切って書いてもいいけど、今回は全カラムのデータを指定しているから、太郎君が書いたように省略してもいいね。
ちなみにカラム名を省略しないで書く場合は、こうなる。
INSERT INTO customers (id, name, zip, prefecture_code, address, birthday, regist_date, unregist_date) VALUES (NULL, "ぼくは 太郎", "123-4567", "13", "東京都のどこか", "1985-11-05", now(), null);
このへんは参画しているプロジェクトごとに「INSERT時には必ずカラム名を記述すること」というルールを定めているところもあるので、参画しているプロジェクトのルールに従ってくれたらいいと思う。
- では実行します。
mysql> INSERT INTO customers VALUES (NULL, "ぼくは 太郎", "123-4567", "13", "東京都のどこか", "1985-11-05", now(), null);
Query OK, 1 row affected (0.17 sec)
- あっさり登録できましたね。確認は、、SELECT で見たらいいのかな。このテーブルは確か何万件もあったから、キーワードとして名前を指定して・・・・・
mysql> SELECT * FROM customers WHERE name ="ぼくは 太郎";
+-------+-------------+----------+-----------------+----------------+------------+---------------------+---------------+
| id | name | zip | prefecture_code | address | birthday | regist_date | unregist_date |
+-------+-------------+----------+-----------------+----------------+------------+---------------------+---------------+
| 67621 | ぼくは 太郎 | 123-4567 | 13 | 東京都のどこか | 1985-11-05 | 2009-04-04 16:14:15 | NULL |
+-------+-------------+----------+-----------------+----------------+------------+---------------------+---------------+
1 row in set (0.11 sec)
- ID 67621 として登録されていますね。
- 確認方法も含め、パーフェクトだね!




ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。