前回はレコードの検索クエリの作成方法を扱いましたが、今回は既存のレコードのフィールド値を更新するUPDATE文と、レコードを削除するDELETE文の練習をしてみます。
まず、扱うテーブル内のレコードの一覧を下記に示します。これは前回と同じです。
1 2 3 4 5 6 7 8 9 10 11 12 | 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文で出力してみます。1 2 3 4 5 6 7 8 9 10 | 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 |+---------+--------+--------+-------+-----------------------+ |
1 2 3 4 5 6 | 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 |
UPDATE <テーブル名>
SET <更新する列名1> = <代入する値1> [, <更新列名2> = <代入値2>, ...]
WHERE <条件式>;WHERE句は省略可能です。SET句内のイコール「=」は代入演算子です(WHERE句の「=」は等価演算子)。複数のフィールドを書き換える際はSET句内の個々の代入式をカンマ「,」で区切ります。UPDATE文は条件に合致する全てのレコードをSET句で書き換えます。実際に書き変わったか確認してみましょう。1 2 3 4 5 6 7 8 9 10 | 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 |+--------+-------+ |
DELETE文でレコードを削除
一般構文は、DELETE FROM <テーブル名>
WHERE <条件式>;です。条件に合致する全てのレコードを削除します。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 |+--------+ |
リファレンス
- MySQL :: MySQL 5.1 Reference Manual :: 12.2.12 UPDATE Syntax
- MySQL :: MySQL 5.1 Reference Manual :: 12.2.2 DELETE Syntax
http://www.abe-tatsuya.com/web_prog/mysql/update_inner_join.php
MySQL の update 文で inner join する
基本的な SQL 文は MySQL だろうが PostgreSQL だろうが、MS Access だろうが何だろうが、変わりはないんですが、一応メモ。MySQL の update 文の中で inner join するには、以下のようにします。
update table1 inner join table2 on table1.id = table2.id set table1.cellname1 = hoge where table2.cellname2 = 'huga';
댓글 없음:
댓글 쓰기