前回はレコードの検索クエリの作成方法を扱いましたが、今回は既存のレコードのフィールド値を更新するUPDATE文と、レコードを削除するDELETE文の練習をしてみます。
まず、扱うテーブル内のレコードの一覧を下記に示します。これは前回と同じです。
mysql> SELECT * FROM book_list; +---------+--------+--------+-------+-----------------------+ | book_id | title | author | price | comments | +---------+--------+--------+-------+-----------------------+ | 1 | book_A | auth_A | 1500 | good, bad, excellence | | 2 | book_B | auth_B | 2900 | not bad, good | | 3 | book_C | auth_C | 1800 | interesting, amazing | | 4 | book_D | auth_D | 700 | sad, depress | | 5 | book_E | auth_E | 1200 | good, funny | | 6 | book_F | auth_C | 3500 | bored, difficult | | 7 | book_G | auth_A | 400 | very good!, excellent | +---------+--------+--------+-------+-----------------------+
UPDATE文でレコードの更新
それでは試しに、「値段が1000円を超え2000円未満の本を100円値下げする」SQL文を書いてみます。最初は念のため修正するレコードをSELECT文で出力してみます。
mysql> SELECT * FROM book_list -> WHERE price > 1000 -> AND price < 2000; +---------+--------+--------+-------+-----------------------+ | book_id | title | author | price | comments | +---------+--------+--------+-------+-----------------------+ | 1 | book_A | auth_A | 1500 | good, bad, excellence | | 3 | book_C | auth_C | 1800 | interesting, amazing | | 5 | book_E | auth_E | 1200 | good, funny | +---------+--------+--------+-------+-----------------------+ [/sql] 次に、UPDATE文で上の本を100円値下げしましょう。 [sql] mysql> UPDATE book_list -> SET price = price - 100 -> WHERE price > 1000 -> AND price < 2000; Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 [/sql] 上手くいったようですね。UPDATE文の一般構文は以下のようになります。 <blockquote>UPDATE <テーブル名> SET <更新する列名1> = <代入する値1> [, <更新列名2> = <代入値2>, ...] WHERE <条件式>;</blockquote> WHERE句は省略可能です。<strong>SET句内のイコール「=」は代入</strong>演算子です(<strong>WHERE句の「=」は等価</strong>演算子)。複数のフィールドを書き換える際はSET句内の個々の代入式をカンマ<strong>「,」で区切り</strong>ます。UPDATE文は条件に合致する<strong>全ての</strong>レコードをSET句で<strong>書き換え</strong>ます。実際に書き変わったか確認してみましょう。 [sql] mysql> SELECT title, price FROM book_list -> WHERE price + 100 > 1000 -> AND price + 100 < 2000; +--------+-------+ | title | price | +--------+-------+ | book_A | 1400 | | book_C | 1700 | | book_E | 1100 | +--------+-------+ [/sql] 確かに、100円値下げしてありますね。 <h2>DELETE文でレコードを削除</h2> 一般構文は、 <blockquote>DELETE FROM <テーブル名> WHERE <条件式>;</blockquote> です。条件に合致する<strong>全ての</strong>レコードを削除します。 [sql] mysql> DELETE FROM book_list -> WHERE title = 'book_G'; Query OK, 1 row affected (0.00 sec) mysql> SELECT title FROM book_list; +--------+ | title | +--------+ | book_A | | book_B | | book_C | | book_D | | book_E | | book_F | +--------+
確かに、book_Gが削除されていますね。
リファレンス
- MySQL :: MySQL 5.7 Reference Manual :: 12.2.12 UPDATE Syntax
- MySQL :: MySQL 5.7 Reference Manual :: 12.2.2 DELETE Syntax
コメント
[…] 参考 […]