- 更新日: 2017年03月31日
- 公開日: 2015年12月08日
ゼロから始めるPHP講座Vol24 データの変更・削除
ゼロから始めるPHP講座 データの変更・削除
レコード更新
レコードの更新には、UPDATE文を使います。
WHERE句は省略可能ですが、省略するとテーブルにある全レコードの値が更新されてしまいます。データ更新は一部レコードのみ行うことが通常であり、条件の設定は忘れないようにしましょう。例として、傘の値段(price)を500から300に変更する場合、SQLは次のようになります。
実際にレコード更新を行い、結果を表示してみましょう。
goods_id | goods_name | price |
---|---|---|
1 | コーラ | 100 |
2 | USB | 2000 |
3 | 傘 | 300 |
4 | お茶 | 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 |
---|---|---|
1 | コーラ | 100 |
2 | USB | 100 |
3 | 傘 | 100 |
4 | お茶 | 100 |
UPDATE後にgoods_tableの全データ表示を行うと、 全ての商品の値段が100になっていることが確認できます。データベース操作はSQLで簡単に行えますが、少し間違えただけで意図しない操作が行われ、大きな障害になったりします。よって実行時は慎重に行いましょう。
なお余談ですが、運用中のデータベースにSQLで変更を加える際は、「ダブルチェック」といって、作業者と確認者の2人で変更を行うのが一般的です。今後もgoods_tableは利用しますので、UPDATE文でUSBと傘の値段を2000と500に戻しておきましょう。
レコード削除
レコードの削除には、DELETE文を使います。
DELETEもWHERE句は省略可能ですが、省略すると全レコード削除となります。
うっかりWHERE句をつけ忘れて全てのデータを消してしまったなどがないよう、DELETEを実行する際は条件に誤りがないか、しっかり確認しましょう。
例として、商品USBを削除する場合、SQLは次のようになります。
実際にレコード削除を行い、結果を表示してみましょう。
goods_table
goods_id | goods_name | price |
---|---|---|
1 | コーラ | 100 |
2 | USB | 100 |
3 | 傘 | 100 |
4 | お茶 | 100 |
DELETE後にgoods_tableの全データ表示を行うと、USBのレコードが削除されていることが確認できます。
WHEREで「goods_idが2」とレコードを指定しているため、削除されたのは1レコードのみとなります。
WHEREの指定を行わず、全レコードの削除を行うSQLは以下となります。
仮にこのSQLを実行した場合の結果を、次に紹介します。
goods_id | goods_name | price |
---|---|---|
1 | コーラ | 100 |
2 | USB | 100 |
3 | 傘 | 100 |
4 | お茶 | 100 |
DELETE後にgoods_tableの全データ表示を行うと、全てのレコードが削除されたため、データは1件も表示されません。
これは「テーブル作成」でテーブル名とカラムの定義を行い、レコード追加はまだ行っていない時とほぼ同じ状態となります。 ※厳密にはA_I(Auto Increment)の値が異なり、A_Iの詳細は別な章で説明します。
また本講義では紹介だけになりますが、テーブル自体の削除はDROP文を使います。
今後もgoods_tableは利用しますので、DELETEにより削除したデータはINSERTを実行し元に戻しておいてください。
課題
emp_tableで、emp_idが1のjobをCTOに変更してください。
emp_table
emp_id | emp_name | job | age |
---|---|---|---|
1 | 山田太郎 | CTO | 50 |
2 | 伊藤静香 | manager | 45 |
3 | 鈴木三郎 | analyst | 30 |
4 | 山田花子 | clerk | 24 |
emp_tableで、ageが40以上のレコードを削除してください。
emp_table
emp_id | emp_name | job | age |
---|---|---|---|
1 | 山田太郎 | CTO | 50 |
2 | 伊藤静香 | manager | 45 |
3 | 鈴木三郎 | analyst | 30 |
4 | 山田花子 | clerk | 24 |
今後もemp_tableは利用しますので、変更及び削除したデータは元に戻しておいてください。
NEXT LESSON ☛ PrimaryKeyとは
PREV LESSON ☛ データの条件指定
- この記事を書いた人
- CodeCampus編集部