ゼロから始めるPHP講座Vol24 データの変更・削除


ゼロから始めるPHP講座Vol24 データの変更・削除
目次
  1. ゼロから始めるPHP講座 データの変更・削除
  2. レコード更新
  3. レコード削除
  4. 課題

ゼロから始めるPHP講座 データの変更・削除

レコード更新

レコードの更新には、UPDATE文を使います。

php-data-2-1-639

WHERE句は省略可能ですが、省略するとテーブルにある全レコードの値が更新されてしまいます。データ更新は一部レコードのみ行うことが通常であり、条件の設定は忘れないようにしましょう。例として、傘の値段(price)を500から300に変更する場合、SQLは次のようになります。

php-data-2-2-639

実際にレコード更新を行い、結果を表示してみましょう。

goods_id goods_name price
コーラ 100
USB 2000
300
お茶 100

UPDATE後にgoods_tableの全データ表示を行うと、傘の値段が500から300に変更されたのが確認できます。WHEREで「goods_idが3」とレコードを指定しているため、更新されたのは1レコードのみとなります。

しかし最初に説明しました通り、WHEREの指定を行わないと、レコードが何万件あったとしても一瞬で置き換わってしまいます。

試しに全レコードの変更を行ってみましょう。

全商品の値段(price)を100にする UPDATE goods_table SET price = 100;

goods_id goods_name price
コーラ 100
USB 100
100
お茶 100

UPDATE後にgoods_tableの全データ表示を行うと、 全ての商品の値段が100になっていることが確認できます。データベース操作はSQLで簡単に行えますが、少し間違えただけで意図しない操作が行われ、大きな障害になったりします。よって実行時は慎重に行いましょう。

なお余談ですが、運用中のデータベースにSQLで変更を加える際は、「ダブルチェック」といって、作業者と確認者の2人で変更を行うのが一般的です。今後もgoods_tableは利用しますので、UPDATE文でUSBと傘の値段を2000と500に戻しておきましょう。

レコード削除

レコードの削除には、DELETE文を使います。

php-data-2-3-639

DELETEもWHERE句は省略可能ですが、省略すると全レコード削除となります。

うっかりWHERE句をつけ忘れて全てのデータを消してしまったなどがないよう、DELETEを実行する際は条件に誤りがないか、しっかり確認しましょう。

例として、商品USBを削除する場合、SQLは次のようになります。

php-data-2-4-639

実際にレコード削除を行い、結果を表示してみましょう。

php-data-2-5-639

php-data-2-6-639

goods_table

goods_id goods_name price
コーラ 100
USB 100
100
お茶 100

DELETE後にgoods_tableの全データ表示を行うと、USBのレコードが削除されていることが確認できます。

WHEREで「goods_idが2」とレコードを指定しているため、削除されたのは1レコードのみとなります。

WHEREの指定を行わず、全レコードの削除を行うSQLは以下となります。

php-data-2-7-639

仮にこのSQLを実行した場合の結果を、次に紹介します。

goods_id goods_name price
コーラ 100
USB 100
100
お茶 100

DELETE後にgoods_tableの全データ表示を行うと、全てのレコードが削除されたため、データは1件も表示されません。

これは「テーブル作成」でテーブル名とカラムの定義を行い、レコード追加はまだ行っていない時とほぼ同じ状態となります。 ※厳密にはA_I(Auto Increment)の値が異なり、A_Iの詳細は別な章で説明します。

また本講義では紹介だけになりますが、テーブル自体の削除はDROP文を使います。

php-data-2-8-639

今後もgoods_tableは利用しますので、DELETEにより削除したデータはINSERTを実行し元に戻しておいてください。

課題

emp_tableで、emp_idが1のjobをCTOに変更してください。

emp_table

emp_id emp_name job age
山田太郎 CTO 50
伊藤静香 manager 45
鈴木三郎 analyst 30
山田花子 clerk 24

emp_tableで、ageが40以上のレコードを削除してください。

emp_table

emp_id emp_name job age
山田太郎 CTO 50
伊藤静香 manager 45
鈴木三郎 analyst 30
山田花子 clerk 24

今後もemp_tableは利用しますので、変更及び削除したデータは元に戻しておいてください。

NEXT LESSON ☛ PrimaryKeyとは

PREV LESSON ☛ データの条件指定


CodeCampus編集部
この記事を書いた人
CodeCampus編集部
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp