1:データの更新(新規データを追加する(insert))
例:新商品を1件追加したい!商品名は”新商品A”で価格を1000円とする
insert into products(name,price)values('新商品A', 1000);
列リストを省略して1件レコードを追加する
insert products values(1002,'新商品B', 2000);
※注意!
↑順番に書かなければいけなかったり、全列指定しなければいけない
ところがミスになりやすく使い勝手が悪い
行を複数追加する
例題)新商品3件をデータベースに追加したい!
[新商品C,価格3,000円],[商品名:新商品D,価格4,000円]
[商品名:新商品E,価格5,000円]
insert into products(name,price) values ('新商品C',3000), ('新商品D',4000), ('新商品E',5000),
レコードの更新(update)
例:全商品を10%引きに設定したい!
10%引き前
↓セーフモードを解除 実務で使う場合は注意!
set sql_safe_updates = 0;
update products set price = price * 0.9;
特定の条件に合致するデータを更新(update)
例:商品id3の商品名をSQL入門に変更したい!
update文とwhere句を使う。
update products set name = ‘SQL入門’ where id = 3;
複数の列を更新する場合
update products set name = ‘SQL入門’, price = 1000, where id = 3;
更新条件にサブクエリを使う
例:累計販売数が10を超えている商品については価格を5%UPしたい!
↓累計販売数(sum(product_qty)が 10 を超えている商品を抽出 select product_id,sum(product_qty) from order_details group by product_id having sum(product_qty) >= 10
これをサブクエリとして使う
update products set price = price * 1.05 where id in (select product_id from order_details group by product_id having sum(product_qty) >= 10 );
行を削除する(delete)
例:今商品に割り振られている商品カテゴリを使うのをやめるので、
商品とカテゴリのひも付けを削除したい!
※削除前
delete from products_categories;
削除されnullだけになった!
※注意!
delete で削除したデータは基本的には元に戻せない。
大量のデータをdeleteする時に予想外に時間がかかる場合があるので注意
一概には言えないが 10万件を超えるぐらいから用心したほうが良い
例:商品ID1001は間違いで登録したものだから削除したい!
※注意!
うっかりwhere句を指定し忘れるとproductsテーブル全体が削除対象となり大変なことになる!
例:1個も売れてない商品は売るのをやめるので削除したい!
まず初めに1個以上売れている商品を表示し後で利用
select product_id from order_details group by product_id;
delete from products where id not in( select product_id from order_details group by product_id);